ఆర్మ్‌స్ట్రాంగ్ సంఖ్య


కఠినత స్థాయి మీడియం
తరచుగా అడుగుతుంది ఒరాకిల్ VMware
మఠం

సమస్యల నివేదిక

N అంకెలను కలిగి ఉన్న x సంఖ్యను అనుమతించండి. ప్రతి అంకె మొత్తానికి పెంచినట్లయితే శక్తి n సంఖ్యకు సమానం, అప్పుడు ఆ సంఖ్య ఆర్మ్‌స్ట్రాంగ్ సంఖ్య అనగా అంటారు

abc… = pow (a, n) + pow (b, n) + pow (c, n) + ……

ఆర్మ్‌స్ట్రాంగ్ సంఖ్యను తనిఖీ చేయడానికి ఒక ప్రోగ్రామ్‌ను వ్రాయండి

ఉదాహరణ

153
Yes

వివరణ: 13 + 53 + 33

= 1 + 125 + 27

= 153 కాబట్టి, 153 ఒక ఆర్మ్స్ట్రాంగ్ సంఖ్య.

1634
Yes
123
No

అల్గారిథం

1. Initialize an integer variable n.
2. Create a function to check the armstrong number which accepts an integer variable as it's parameter.
3. Find the length of the number.
4. Iterate while the number is greater than 0, mod number with 10. Find the digit's power n and add to sum. Divide the number by 10.
5. Check if sum and original number are equal or not.
6. If yes, Print "Yes".
7. Else print "No".

సంక్లిష్టత విశ్లేషణ

సమయం సంక్లిష్టత:

O (log (n) * log (log (n)) ఇక్కడ n అనేది ఇచ్చిన పూర్ణాంక వేరియబుల్‌లోని అంకెల సంఖ్య, ఎందుకంటే మేము సంఖ్యల యొక్క అన్ని అంకెలకు ఘాతాంకాన్ని కనుగొంటాము.

అంతరిక్ష సంక్లిష్టత:

O (1) ఎందుకంటే మేము స్థిరమైన స్థలాన్ని ఉపయోగించాము.

సి ++ ప్రోగ్రామ్

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

int expo(int a, int b){
    int res = 1;
    while(b>0){
        if(b&1)
            res = res*a;
        a = a*a;
        b = b>>1;
    }
    return res;
}

bool checkArmstrong(int x){
    int l = 0, n = x;
    while(n){
        l++;
        n = n/10;
    }
    int sum=0;
    n = x;
    while(n){
        int digit = n%10;
        sum += expo(digit, l);
        n = n/10;
    }
    return(sum == x);
}

int main(){
    int n = 153;
    if(checkArmstrong(n))
        cout<<"Yes";
    else
        cout<<"No";
    return 0;
}
Yes

జావా ప్రోగ్రామ్

import java.lang.Math;
class Armstrong{ 
    
    boolean checkArmstrong(int x){ 
        int l = 0, n = x; 
        while(n!=0){ 
            l++; 
            n = n/10; 
        }
        int sum=0;
        int num = x;
        while(num!=0){ 
            int digit = num%10; 
            sum += Math.pow(digit, l); 
            num = num/10; 
        }
        return(sum == x); 
    } 
  
    public static void main(String[] args){ 
        Armstrong a = new Armstrong(); 
        int n = 153; 
        if(a.checkArmstrong(n))
            System.out.println("Yes");
        else
            System.out.println("No");
    } 
}
Yes

N'th ఆర్మ్‌స్ట్రాంగ్ సంఖ్యను కనుగొనడానికి ఒక ప్రోగ్రామ్‌ను వ్రాయండి.

ఉదాహరణ:

11
370

వివరణ: 11 వ ఆర్మ్‌స్ట్రాంగ్ సంఖ్య 370.

15
8208

అల్గారిథం

1. పూర్ణాంక వేరియబుల్ n ను ప్రారంభించండి.

2. పూర్ణాంకం వలె పూర్ణాంక వేరియబుల్‌ను అంగీకరించే ఆర్మ్‌స్ట్రాంగ్ సంఖ్యను తనిఖీ చేయడానికి ఒక ఫంక్షన్‌ను సృష్టించండి.

3. చివరి అంకెను పొందడానికి 1 తో మోడ్ సంఖ్య నుండి పేర్కొన్న పూర్ణాంకం మీద మళ్ళించండి. అంకెల శక్తిని కనుగొని మొత్తానికి జోడించండి.

4. సంఖ్యను 10 ద్వారా విభజించండి.

5. మొత్తం ప్రస్తుత మళ్ళా సంఖ్యకు సమానం కాదా అని తనిఖీ చేయండి, గణనను పెంచండి.

6. కౌంట్ n కి సమానం అయితే, ప్రస్తుత మళ్ళా సంఖ్యను తిరిగి ఇవ్వండి.

సమయం సంక్లిష్టత:

O (log (n) * log (log (n)) ఇక్కడ n అనేది ఇచ్చిన పూర్ణాంక వేరియబుల్‌లోని అంకెల సంఖ్య.

అంతరిక్ష సంక్లిష్టత:

O (1) ఎందుకంటే మేము స్థిరమైన అదనపు స్థలాన్ని ఉపయోగించాము.

సి ++ ప్రోగ్రామ్

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

int expo(int a, int b){
    int res = 1;
    while(b>0){
        if(b&1)
            res = res*a;
        a = a*a;
        b = b>>1;
    }
    return res;
}

int nthArmstrong(int n){
    int count=0;

    for(int i=1; i<=INT_MAX; i++){
        int num=i, rem, digit=0, sum=0;

        digit =(int)log10(num)+1;

        while(num>0){
            rem = num % 10;
            sum = sum + expo(rem,digit);
            num = num / 10;
        }
        if(i == sum)
            count++;
        if(count==n)
            return i;
    }
}

int main(){
    int n = 15;
    cout<<nthArmstrong(n);
    return 0;
}
8208

జావా ప్రోగ్రామ్

import java.lang.Math; 
  
class Armstrong{ 
      
    static int nthArmstrong(int n){ 
        int count = 0; 
          
        for(int i=1; i<=Integer.MAX_VALUE; i++){ 
            int num = i, rem, digit = 0, sum = 0; 
              
            digit = (int) Math.log10(num) + 1; 
              
            while(num > 0){  
                rem = num % 10; 
                sum = sum + (int)Math.pow(rem, digit); 
                num = num / 10; 
            } 
              
            if(i == sum) 
                count++; 
            if(count == n) 
                return i; 
        } 
        return n; 
    } 
      
    public static void main(String[] args){ 
        int n = 15; 
        System.out.println(nthArmstrong(n)); 
    } 
}
8208