Рақами хушбахт


Сатҳи душворӣ осон
Аксар вақт пурсида мешавад Adobe Amazon себ JP Morgan
Хаш Хашм Матем

Изҳороти мушкилот

Рақами хушбахт чист?

Адад рақами хушбахт аст, агар мо адади додашударо ба 1 пас аз ин раванд коҳиш диҳем:

-> Ҷамъи квадрати рақамҳои адади додашударо ёбед. Ин суммаро бо рақами кӯҳна иваз кунед. Мо ин равандро то он даме такрор хоҳем кард, ки шумораи онро ба як нафар кам кунем ё ин ки давра ташкил кунад.

Ин маънои онро дорад, ки давра ба вуҷуд меояд, ба монанди он ки агар мо бо рақам оғоз карда, раванди ба як табдил додани онро пайгирӣ кунем, аммо мо ба шумораи ба он чашм дӯхтаамон расидем ва пас мегӯем, ки он давра ташкил мекунад.

намунаи сикли ташаккули рақамҳо чунинанд:

89
8*8+9*9=145
1*1*+4*4+5*5=42
4*4+2*2=20
2*2+0*0=4
4*4=16
1*1+6*6=37
3*3+7*7=58
5*5+8*8=89

Пас, ин як давраро ташкил медиҳад. Аз ин рӯ, шумораи хушбахт нест, зеро инро ба 1 коҳиш додан мумкин нест, зеро он ҳар вақт 89-ро ташкил медиҳад. Агар рақам ба 1 кам карда шавад, ҳақиқии дигаре бармегардад.

мисол

19
true

Шарҳ

1^2+9^2=82

8^2+2^2=68

6^2+8^2=100

1^2+0^2+0^2=1

Рақами хушбахт

Мо метавонем ин рақамро ба як нафар кам кунем, то ин рақами хушбахт бошад.

усул

Ин масъала хеле содда аст ва танҳо мафҳуми асосии маҷмӯаро истифода мебарад.

Маҷмӯа чист?

Маҷмӯа як контейнери ассотсиатсионист, ки дар он унсурҳои беназир мавҷуданд.

Барои ҳалли ин мушкилот мо а маҷмӯи. Дар маҷмӯъ, мо шумораи навташкилро пас аз илова кардани квадрати рақамҳои рақам мегузорем. Ҳоло, агар элемент аллакай дар маҷмӯъ мавҷуд бошад, ин маънои онро дорад, ки он ҳалқа ташкил мекунад ва мо адади додашударо ба як табдил дода наметавонем, ин рақами хушбахт нест. Агар рақам ба якто кам карда шавад, он гоҳ шумораи додашуда рақами хушбахт аст.

рамз

Коди C ++ барои рақами хушбахт

#include <bits/stdc++.h> 
using namespace std; 

 bool isHappy(int n) {
        unordered_set<int> tmp;
        while(n != 1)
        {
            if(tmp.find(n) == tmp.end())
                tmp.insert(n);
            else
                return false;
            int sum = 0;
            while(n != 0)
            {
                sum += pow(n % 10,2);
                n = n / 10;
            }
            n = sum;
        }
        return true;
    }

int main() 
{ 
    int n=19;
    int answer=isHappy(n);
    if(answer)
    cout<<"true"<<endl;
    else
    cout<<"false"<<endl;
  return 0; 
}
true

Рамзи Java барои рақами хушбахт

import java.util.*;

class Main
{
  static public boolean isHappy(int n) {
      Set<Integer> inLoop = new HashSet<Integer>();
      int squareSum,remain;
      while (inLoop.add(n)) {
      	squareSum = 0;
        while (n > 0) {
            remain = n%10;
          squareSum += remain*remain;
          n /= 10;
        }
        if (squareSum == 1)
          return true;
        else
          n = squareSum;
    }
    return false;
  }

  public static void main (String[] args) throws java.lang.Exception
  {
    int n = 19;
    boolean result = isHappy(n);
    System.out.print(result);
  }
}
19
true

Таҳлили мураккабӣ

Мураккабии вақт

O (log N), log N пойгоҳи 10 дорад. Ҳамин тавр, мураккабии вақт ба шумораи рақамҳои адад вобаста аст. Ва он бо коэффитсиенти логарифм коҳишро нигоҳ медорад. Ҳамин тариқ, мураккабии вақт O (log N) мебошад.

Мураккабии фазо

O (logN), барои нигоҳ доштани ин рақамҳои мобайнӣ ҷой лозим аст. Монанди мураккабии вақт мураккабии фазо низ логарифмист.