සතුටු අංකය


දුෂ්කරතා මට්ටම පහසු
නිතර අසනු ලැබේ ඇෙබෝ ඇමේසන් Apple ජංගම දුරකථන ජේපී මෝගන්
හැෂ් හැෂිං ගණිතය

ගැටළු ප්රකාශය

ප්‍රීතිමත් අංකයක් යනු කුමක්ද?

මෙම ක්‍රියාවලියෙන් පසුව අපට දී ඇති අංක 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

සතුටු අංකය

අපට මෙම සංඛ්‍යාව එකකට අඩු කළ හැකි බැවින් එය ප්‍රීතිමත් අංකයකි.

ප්රවේශය

මෙම ගැටළුව ඉතා සරල වන අතර එය භාවිතා කරන්නේ කට්ටලයේ මූලික සංකල්පය පමණි.

කට්ටලයක් යනු කුමක්ද?

කට්ටලය යනු අද්විතීය මූලද්‍රව්‍ය පවතින සහායක බහාලුමකි.

මෙම ගැටළුව විසඳීම සඳහා අපි a කට්ටලයක්. කට්ටලය තුළ, අංකයේ ඉලක්කම්වල වර්ග එකතු කිරීමෙන් පසුව අපි අලුතින් සාදන ලද අංකය ඇතුළත් කරමු. දැන් මූලද්රව්යය දැනටමත් කට්ටලයේ තිබේ නම් එයින් අදහස් කරන්නේ එය ලූපයක් සාදන බවත් අපට ලබා දී ඇති සංඛ්යාව එකකට පරිවර්තනය කළ නොහැකි බවත් මෙය ප්රීතිමත් සංඛ්යාවක් නොවන බවත්ය. අංකය එකකට අඩු කළහොත් දී ඇති අංකය ප්‍රීතිමත් අංකයකි.

කේතය

ප්‍රීතිමත් අංකය සඳහා 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

ප්‍රීතිමත් අංකය සඳහා ජාවා කේතය

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

සංකීර්ණ විශ්ලේෂණය

කාල සංකීර්ණත්වය

ඕ (ලොග් එන්), ලොග් එන් පාදම 10 ඇත. එබැවින්, කාල සංකීර්ණතාව රඳා පවතින්නේ සංඛ්‍යාවේ ඉලක්කම් ගණන මත ය. තවද එය ල ar ු ගණක සාධකය සමඟ අඩු වෙමින් පවතී. මේ අනුව කාල සංකීර්ණතාව O (ලොග් N) වේ.

අභ්‍යවකාශ සංකීර්ණතාව

ඕ (ලොග්එන්), මෙම අතරමැදි සංඛ්‍යා ගබඩා කිරීමට ඉඩ අවශ්‍ය වේ. කාල සංකීර්ණතාවයට සමානව අවකාශයේ සංකීර්ණතාව ද ල ar ු ගණකය වේ.