返回列表 發帖

a040: 阿姆斯壯數

本帖最後由 buy 於 2010-10-16 11:58 編輯

內容 : 正體->简体
所謂 Armstrong number 指的是一個 n 位數的整數,它的所有位數的 n 次方和恰好等於自己。

如;1634 = 14 + 64 + 34+ 44

請依題目需求在一定範圍內找出該範圍內的所有 armstrong numbers.

輸入說明 :
輸入包含兩個數字n, m(n<m, n>0, m<=1000000),代表所有尋找 armstrong number 的範圍
輸出說明 :
將所有範圍內的 armstrong number 依序由小到大輸出,如果沒有找到請輸出 none.



範例輸入 :

100 999 10 99
範例輸出 :

153 370 371 407 none

------------------------------------------------------------------------------------------
1, 2, 3, 4, 5, 6, 7, 8, 9, 153, 370, 371, 407, 1634, 8208, 9474, 54748, 92727, 93084, 548834, 1741725, 4210818, 9800817, 9926315, 24678050, 24678051, 88593477, 146511208, 472335975, 534494836, 912985153, 4679307774, 32164049650, 32164049651

1.先找出左邊界

2. 找出右邊界

3. 將界限內的 armstrong number 印出來

--------------------------------------------------------------
  1. long Value[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 153, 370,
  2.                                 371, 407, 1634, 8208, 9474, 54748, 92727,
  3.                                 93084, 548834, 1741725, 4210818, 9800817, 9926315,
  4.                                 24678050, 24678051, 88593477, 146511208, 472335975 };
  5.         long a,b;
  6.         int Lower,Upper;
  7.         while( cin >> a >> b )
  8.         {
  9.                  ...
  10.                 //判斷Upper,Lower

  11.                 if(Upper < Lower)
  12.                 {
  13.                         cout << "none" << endl;
  14.                 }
  15.                 else
  16.                 {
  17.                         for (i =Lower ; i<= Upper ; i++)
  18.                         {
  19.                                 cout << Value[i] << " ";
  20.                         }       
  21.                         cout << endl;
  22.                 }
  23.                 }
複製代碼

本帖最後由 chuangjoy 於 2010-10-16 12:02 編輯
  1. #include <iostream>
  2. using namespace std;
  3. int main(){
  4.    
  5.     long Value[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 153, 370,
  6.                                 371, 407, 1634, 8208, 9474, 54748, 92727,
  7.                                 93084, 548834, 1741725, 4210818, 9800817, 9926315,
  8.                                 24678050, 24678051, 88593477, 146511208, 472335975 };
  9.         long a,b;
  10.         int Lower,Upper;
  11.         while(cin >> a >> b )
  12.         {
  13.                 for(int i = 0; i <= 29; i++){
  14.                         if(Value[i] < a){
  15.                                     break;
  16.                         }else{
  17.                               Upper = i;
  18.                         }
  19.                 }
  20.                 for(int i = 29; i >= 0; i--){
  21.                         if(Value[i] > b){
  22.                                      break;
  23.                         }else{
  24.                               Lower = i;
  25.                         }
  26.                 }
  27.                 //判斷Upper,Lower

  28.                 if(Upper < Lower){
  29.                         cout << "none" << endl;
  30.                 }else{
  31.                         for (int i = Lower; i <= Upper; i++){
  32.                                 cout << Value << " ";
  33.                         }        
  34.                         cout << endl;
  35.                 }
  36.                 }
  37. return 0;
  38. }
複製代碼
這是錯的~
一直無窮回圈~
= =

TOP

  1. #include<iostream>
  2. using namespace std;
  3. main(){


  4. int value[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 153, 370,
  5.                                 371, 407, 1634, 8208, 9474, 54748, 92727,
  6.                                 93084, 548834, 1741725, 4210818, 9800817, 9926315,
  7.                                 24678050, 24678051, 88593477, 146511208, 472335975 };
  8.         long a,b;
  9.         int c[29] = {0};
  10.         int k = 0;
  11.         while( cin >> a >> b ){
  12.                  if (a > b){
  13.                     cout << "none" << endl;      
  14.                  }else{
  15.                  
  16.                  for (int i = 0;i <= 29;i++){
  17.                      if (value[i] >= a && value[i] <= b){
  18.                         c[k]= value[i];
  19.                         k++;
  20.                                     
  21.                      }   
  22.                  }cout << endl;
  23.                  
  24.                  if (k == 0){
  25.                     cout << "none" << endl;      
  26.                  }else{
  27.                        for (int i = 0;i < k;i++){
  28.                            cout << c[i] << " ";   
  29.                        }cout << endl;      
  30.                  }
  31.                  
  32.                  }
  33. }               
  34. }
複製代碼
我是來去無蹤的..

                                ..士豪(Alen)黑輪

TOP

  1. #include <iostream>
  2. using namespace std;
  3. int main(){
  4.    
  5.     long Value[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 153, 370,
  6.                                 371, 407, 1634, 8208, 9474, 54748, 92727,
  7.                                 93084, 548834, 1741725, 4210818, 9800817, 9926315,
  8.                                 24678050, 24678051, 88593477, 146511208, 472335975 };
  9.         long a,b;
  10.         int Lower=0,Upper=0;
  11.         while(cin >> a >> b )
  12.         {
  13.                 for(int i = 0; i < 29; i++){
  14.                         if(Value[i] <= a){
  15.                                      Lower = i;
  16.                         }else{
  17.                              break;
  18.                         }
  19.                 }
  20.                 for(int i = 28; i >= 0; i--){
  21.                         if(Value[i] <= b){
  22.                                      break;
  23.                         }else{
  24.                               Upper = i;
  25.                         }
  26.                 }
  27.                
  28.                 if(Value[Lower] != a)
  29.                 {              
  30.                       Lower++;           
  31.                 }
  32.                
  33.                 //判斷Upper,Lower
  34.                
  35.                 Upper--;
  36.                 //Lower++;
  37.                
  38.                 //cout << Lower << "," << Upper << ".";


  39.                 if(Upper < Lower){
  40.                         cout << "none" << endl;
  41.                 }else{
  42.                         for (int i = Lower; i <= Upper; i++){
  43.                                 cout << Value[i] << " ";
  44.                         }        
  45.                         cout << endl;
  46.                 }
  47.                
  48.                 }



  49.     //system("pause");
  50.     return 0;
  51. }
複製代碼

TOP

  1. #include <iostream>
  2. using namespace std;
  3. int main(){
  4.    
  5.     long Value[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 153, 370,
  6.                                 371, 407, 1634, 8208, 9474, 54748, 92727,
  7.                                 93084, 548834, 1741725, 4210818, 9800817, 9926315,
  8.                                 24678050, 24678051, 88593477, 146511208, 472335975 };
  9.         long a,b;
  10.         int Lower=0,Upper=0;
  11.         while(cin >> a >> b )
  12.         {
  13.                 for(int i = 0; i < 29; i++){
  14.                         if(Value[i] <= a){
  15.                                      Lower = i;
  16.                         }else{
  17.                              break;
  18.                         }
  19.                 }
  20.                 for(int i = 28; i >= 0; i--){
  21.                         if(Value[i] <= b){
  22.                                      break;
  23.                         }else{
  24.                               Upper = i;
  25.                         }
  26.                 }
  27.                
  28.                 if(Value[Lower] != a)
  29.                 {              
  30.                       Lower++;           
  31.                 }
  32.                
  33.                 //判斷Upper,Lower
  34.                
  35.                 Upper--;
  36.                 //Lower++;
  37.                
  38.                 //cout << Lower << "," << Upper << ".";


  39.                 if(Upper < Lower){
  40.                         cout << "none" << endl;
  41.                 }else{
  42.                         for (int i = Lower; i <= Upper; i++){
  43.                                 cout << Value[i] << " ";
  44.                         }        
  45.                         cout << endl;
  46.                 }
  47.                
  48.                 }



  49.     //system("pause");
  50.     return 0;
  51. }
複製代碼

TOP

  1. #include <iostream>
  2. using namespace std;
  3. int main(){
  4.    
  5.     long Value[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 153, 370,
  6.                                 371, 407, 1634, 8208, 9474, 54748, 92727,
  7.                                 93084, 548834, 1741725, 4210818, 9800817, 9926315,
  8.                                 24678050, 24678051, 88593477, 146511208, 472335975 };
  9.         long a,b;
  10.         int Lower=0,Upper=0;
  11.         while(cin >> a >> b )
  12.         {
  13.                 for(int i = 0; i < 29; i++){
  14.                         if(Value[i] <= a){
  15.                                      Lower = i;
  16.                         }else{
  17.                              break;
  18.                         }
  19.                 }
  20.                 for(int i = 28; i >= 0; i--){
  21.                         if(Value[i] <= b){
  22.                                      break;
  23.                         }else{
  24.                               Upper = i;
  25.                         }
  26.                 }
  27.                
  28.                 if(Value[Lower] != a)
  29.                 {              
  30.                       Lower++;           
  31.                 }
  32.                
  33.                 //判斷Upper,Lower
  34.                
  35.                 Upper--;
  36.                 //Lower++;
  37.                
  38.                 //cout << Lower << "," << Upper << ".";


  39.                 if(Upper < Lower){
  40.                         cout << "none" << endl;
  41.                 }else{
  42.                         for (int i = Lower; i <= Upper; i++){
  43.                                 cout << Value[i] << " ";
  44.                         }        
  45.                         cout << endl;
  46.                 }
  47.                
  48.                 }



  49.     //system("pause");
  50.     return 0;
  51. }
複製代碼
分數掛蛋的心情像空白的紙,再次期望著奇蹟的到來。

TOP

回復 4# buy
  1. #include <iostream>
  2. using namespace std;
  3. int main(){
  4.    
  5.     long Value[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 153, 370,
  6.                                 371, 407, 1634, 8208, 9474, 54748, 92727,
  7.                                 93084, 548834, 1741725, 4210818, 9800817, 9926315,
  8.                                 24678050, 24678051, 88593477, 146511208, 472335975 };
  9.         long a,b;
  10.         int Lower=0,Upper=0;
  11.         while(cin >> a >> b )
  12.         {
  13.                 for(int i = 0; i < 29; i++){
  14.                         if(Value[i] <= a){
  15.                                      Lower = i;
  16.                         }else{
  17.                              break;
  18.                         }
  19.                 }
  20.                 for(int i = 28; i >= 0; i--){
  21.                         if(Value[i] <= b){
  22.                                      break;
  23.                         }else{
  24.                               Upper = i;
  25.                         }
  26.                 }
  27.                
  28.                 if(Value[Lower] != a)
  29.                 {              
  30.                       Lower++;           
  31.                 }
  32.                
  33.                 //判斷Upper,Lower
  34.                
  35.                 Upper--;
  36.                 //Lower++;
  37.                
  38.                 //cout << Lower << "," << Upper << ".";


  39.                 if(Upper < Lower){
  40.                         cout << "none" << endl;
  41.                 }else{
  42.                         for (int i = Lower; i <= Upper; i++){
  43.                                 cout << Value[i] << " ";
  44.                         }        
  45.                         cout << endl;
  46.                 }
  47.                
  48.                 }



  49.     //system("pause");
  50.     return 0;
  51. }
複製代碼
我是來去無蹤的..

                                ..士豪(Alen)黑輪

TOP

TOP

返回列表