آرمسٹرونگ نمبر


مشکل سطح درمیانہ
اکثر پوچھا جاتا ہے اوریکل VMware
ریاضی

مسئلہ یہ بیان

ایک نمبر x کو n ہندسوں پر مشتمل ہونے دیں۔ اگر ہر ہندسے کا مجموعہ طاقت ن خود ہی تعداد کے برابر ہے ، پھر اس نمبر کو آرمسٹرونگ نمبر یعنی کہا جاتا ہے

abc… = پاؤ (اے ، این) + پاؤ (بی ، این) + پاؤ (سی ، این) + ……

آرمسٹرونگ نمبر چیک کرنے کے لئے ایک پروگرام لکھیں

مثال کے طور پر

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) کیونکہ ہم مستقل جگہ استعمال کرتے ہیں۔

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 کے ساتھ موڈ نمبر۔ ہندسے کی طاقت n تلاش کریں اور رقم میں اضافہ کریں۔

نمبر 4 کو تقسیم کریں۔

Check. چیک کریں کہ کیا موجودہ مکرر اعداد ، گنتی میں اضافہ کے برابر ہے؟

6. اگر گنتی n کے برابر ہے تو ، موجودہ اعادہ نمبر کو لوٹائیں۔

وقت کی پیچیدگی:

O (log (n) * log (log (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;
}

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