आर्मस्ट्रांग नंबर


कठिनाई स्तर मध्यम
में अक्सर पूछा ओरेकल VMware
मठ

समस्या का विवरण

एक संख्या x है, जिसमें n अंक हैं। यदि उठाए गए प्रत्येक अंक का योग बिजली n स्वयं संख्या के बराबर है, फिर संख्या को आर्मस्ट्रांग संख्या कहा जाता है

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

आर्मस्ट्रांग नंबर की जांच करने के लिए एक कार्यक्रम लिखें

उदाहरण

153
Yes

स्पष्टीकरण: 13 + 53 + 33

= 1 + 125 + 27

= 153 इसलिए, 153 a है आर्मस्ट्रांग संख्या.

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 (लॉग (n) * लॉग (लॉग (n)) जहां n दिए गए पूर्णांक चर में अंकों की संख्या है क्योंकि हम संख्याओं के सभी अंकों के लिए घातांक पा रहे हैं।

अंतरिक्ष जटिलता:

O (1) क्योंकि हमने निरंतर स्थान का उपयोग किया है।

C ++ प्रोग्राम

#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. 10 से मॉड नंबर से एक पूर्णांक के बारे में बताता हूं। अंक की शक्ति n ज्ञात करें और योग में जोड़ें।

4. संख्या को 10 से विभाजित करें।

5. जाँच करें कि क्या राशि वर्तमान पुनरावृत्ति संख्या के बराबर है, गिनती बढ़ाएँ।

6. यदि गणना n के बराबर है, तो वर्तमान पुनरावृत्ति संख्या लौटाएं।

समय जटिलता:

ओ (लॉग (एन) * लॉग (लॉग (एन)) जहां एन दिए गए पूर्णांक चर में अंकों की संख्या है।

अंतरिक्ष जटिलता:

O (1) क्योंकि हमने निरंतर अतिरिक्त स्थान का उपयोग किया है।

C ++ प्रोग्राम

#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