Armstrong sayı

Çətinlik səviyyəsi Mühit
Tez-tez soruşulur Kahin VMware
RiyaziyyatBaxılıb 116

Sistem dizaynı ilə bağlı müsahibə sualları o qədər açıq ola bilər ki, düzgün hazırlaşmağı bilmək çox çətindir. İndi satın aldıqdan sonra Amazon, Microsoft və Adobe-nin dizayn dövrlərini sındıra bilirəm Bu kitabı. Gündəlik bir yenidən nəzərdən keçirin dizayn sualı və söz verirəm ki, dizayn dövrünü sındıra bilərsiniz.

Problem bəyanat

Armstrong sayıPin
Armstrong sayı

N rəqəmi olan x ədədi bildirin. Hər rəqəmin cəmi qaldırılmışsa güc n sayının özünə bərabərdir, o zaman sayın güclü rəqəm olduğu deyilir, yəni

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

Armstrong Nömrəsini yoxlamaq üçün bir proqram yazın

misal

153
Yes

Explanation: 13 + 53 + 33

= 1 + 125 + 27

= 153 Buna görə 153 birdir armstrong nömrə.

1634
Yes
123
No

Alqoritm

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".

Mürəkkəblik təhlili

Zamanın mürəkkəbliyi:

O (log (n) * log (log (n))) burada n - verilənlərin tam ədədi dəyişənindəki rəqəmlərin sayı, çünki rəqəmlərin bütün rəqəmləri üçün göstərici tapırıq.

Kosmik Mürəkkəblik:

O (1), çünki daimi məkandan istifadə etdik.

C ++ proqramı

#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

Java proqramı

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 saylı armstrong nömrəsini tapmaq üçün bir proqram yazın.

Misal:

11
370

İzahat: 11. Armstrong sayı 370-dır.

15
8208

Alqoritm

1. n tam dəyişənini başlayın.

2. Parametr olaraq bir tam dəyişəni qəbul edən armstrong nömrəsini yoxlamaq üçün bir funksiya yaradın.

3. Son rəqəmi əldə etmək üçün 1 ilə mod nömrəsini 10-dən ifadə edən bir tam ədədin üzərində təkrarlayın. Rəqəmin gücünü tapın və cəminə əlavə edin.

4. Ədədi 10-a bölün.

5. Cəmin cari təkrarlanan saya bərabər olub olmadığını yoxlayın, sayını artırın.

6. Sayı n-ə bərabərdirsə, cari təkrarlanan ədədi qaytarın.

Zamanın mürəkkəbliyi:

O (log (n) * log (log (n))) burada n - verilən tam ədəd dəyişənindəki rəqəmlərin sayı.

Kosmik Mürəkkəblik:

O (1), çünki daimi əlavə yer istifadə etdik.

C ++ proqramı

#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

Java proqramı

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

 

Crack Sistemi Dizayn Müsahibələri
Translate »
2