返回列表 發帖

310 函式與陣列 (阿姆斯壯數)

1. 題目說明:
請依下列題意進行作答,使輸出值符合題意要求。

2. 設計說明:
請撰寫一程式,包含名為compute()的函式,接收主程式傳遞的一個整數n(0 < n < 1000),compute()輸出所有小於n的阿姆斯壯數並回傳總和至主程式輸出。

阿姆斯壯數的定義:若為k位數的正整數,則其所有位數數字的k次方與該數相等。

補充說明:
阿姆斯壯數(Armstrong number),又稱自戀數(Narcissistic number)(因為各數字 n 次方後加總又等於本身,感覺很自戀?)。
例如 153 可以滿足 1³ + 5³ + 3³ = 153,153 就是個阿姆斯壯數,阿姆斯壯數有 88 個,最大為 39 位數的 115132219018763992565095597973971522401,已證實超過 39 位數不存在阿姆斯壯數。

提示:若使用 Java 語言答題,請以「JP」開頭命名包含 main 靜態方法的 class,評測系統才能正確評分。

3. 輸入輸出:
輸入說明
一個整數n(0 < n < 1000)

輸出說明
所有小於n的阿姆斯壯數與其總和

範例輸入
999
範例輸出
1
2
3
4
5
6
7
8
9
153
370
371
407
1346


本帖隱藏的內容需要回復才可以瀏覽

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int compute(int a)
  4. {
  5.     int sum=0;
  6.     for(int i=1 ; i<a ; i++)
  7.     {
  8.         string str = to_string(i);
  9.         int l = str.length();
  10.         if(l == 1)
  11.         {
  12.             cout << i << endl;
  13.             sum+=i;
  14.         }
  15.         if(l == 2)
  16.         {
  17.             if(pow(str[0]-'0',2)+pow(str[1]-'0',2) == i)
  18.             {
  19.                 cout << i << endl;
  20.                 sum+=i;
  21.             }
  22.         }
  23.         if(l == 3)
  24.         {
  25.             if(pow(str[0]-'0',3)+pow(str[1]-'0',3)+pow(str[2]-'0',3) == i)
  26.             {
  27.                 cout << i << endl;
  28.                 sum+=i;
  29.             }
  30.         }
  31.     }
  32.     return sum;
  33. }
  34. int main()
  35. {
  36.     int n;
  37.     cin >> n;
  38.     cout << compute(n) << endl;
  39.     return 0;
  40. }
複製代碼
Vincent

TOP

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int compute(int n){
  4.     int sum=0;
  5.     for(int i=1;i<n;i++){
  6.     string str=to_string(i);
  7.     int l=str.length();
  8.     if(l==1)
  9.     {
  10.     cout<<i<<endl;
  11.     sum+=i;
  12.     }
  13.     if(pow(str[0]-'0',2)+pow(str[1]-'0',2)==i){
  14.     cout<<i<<endl;
  15.     sum+=i;
  16.     }
  17.     if(pow(str[0]-'0',3)+pow(str[1]-'0',3)+pow(str[2]-'0',3)==i){
  18.     cout<<i<<endl;
  19.     sum+=i;
  20.     }

  21.    }
  22.    return sum;
  23. }
  24. int main(){
  25.     int n;
  26.     cin>>n;
  27.     cout<<compute(n);
  28.     return 0;
  29. }
複製代碼

TOP

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int compute(int n)
  4. {
  5.     int sum=0;
  6.     for(int i=1;i<n;i++)
  7.     {
  8.         string str=to_string(i);
  9.         int l=str.length();
  10.         if(l==1)
  11.         {
  12.             sum+=i;
  13.             cout<<i<<endl;
  14.         }
  15.         else if(l==2)
  16.         {
  17.             if(pow(str[0]-'0',2)+pow(str[1]-'0',2)==i)
  18.             {
  19.                 cout<<i<<endl;
  20.                 sum+=i;
  21.             }
  22.         }
  23.         else
  24.         {
  25.             if(pow(str[0]-'0',3)+pow(str[1]-'0',3)+pow(str[2]-'0',3)==i)
  26.             {
  27.                 cout<<i<<endl;
  28.                 sum+=i;
  29.             }
  30.         }
  31.     }
  32.     return sum;
  33. }
  34. int main()
  35. {
  36.     int n;
  37.     cin>>n;
  38.     cout<<compute(n);

  39.     return 0;
  40. }
複製代碼

TOP

返回列表