رقم ارمسترونج


مستوى الصعوبة متوسط
كثيرا ما يطلب في أوراكل في إم وير
الرياضيات

المشكلة بيان

لنفترض أن عددًا يحتوي على n عددًا من الأرقام. إذا تم رفع مجموع كل رقم إلى قوة n يساوي الرقم نفسه ، ثم يُقال أن الرقم هو رقم armstrong أي

أبج ... = الأسرى (أ ، ن) + الأسرى (ب ، ن) + الأسرى (ج ، ن) + ...

اكتب برنامجًا للتحقق من رقم Armstrong

مثال

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.

15
8208

خوارزمية

1. تهيئة متغير عدد صحيح n.

2. قم بإنشاء دالة للتحقق من رقم armstrong الذي يقبل متغير عدد صحيح كمعامل.

3. كرر على عدد صحيح يذكر من 1. رقم Mod مع 10 للحصول على آخر رقم. أوجد قوة الرقم n واجمعها في المجموع.

4. قسّم الرقم على 10.

5. تحقق مما إذا كان المجموع يساوي رقم التكرار الحالي ، قم بزيادة العدد.

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