因為暑期營隊還沒教到文字處理程式,
math.h也不知道為什麼無法正常運作,
所以只好多寫一大堆程式碼,
花了我一個多小時,debug了幾十次才刷完這題
以下是我的解法:
#include <iostream>
using namespace std;
int digit(int i){ //定義計算位數的函式
int counter=1;
for(int j=10;j<=i;j*=10){
counter++;
}
return counter;
}
int pow(int x,int y){ //定義次方的函式
int px=1;
for(int l=1;l<=y;l++){
px*=x;
}
return px;
}
int main()
{
int n,m,i,j,k,l,x,y,px,counter,sum;
int d[7];
bool find;
while(cin>>n>>m){
find=0;
for(i=n;i<=m;i++){
for(k=digit(i)-1;k>=0;k--){
d[k]=((i%pow(10,k+1))-(i%pow(10,k)))/(pow(10,k)); //取出各位數字並保存到陣列中
}
sum=0;
for(k=0;k<digit(i);k++){
sum+=pow(d[k],digit(i)); //計算各位數字的位數次方的和
}
if(sum==i){ //判斷是否為阿姆斯壯數
cout<<i<<" ";
find=1;
}
if(find==0){ //未找到則顯示none
cout<<"none";
}
cout<<endl;
}
return 0;
}