#12799: 有點偷吃步的解法 c++


blackconqueror (boweichen)


因為題目給的範圍之內的阿姆斯壯數就只有24個,扣除0的話

所以直接建立一個陣列,裡頭除存所有阿姆斯壯數

然後再把範圍拿去一一比較,答案就出來啦~~

code如下:

#include <iostream>
#include <cmath>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;
int main(int argc, char** argv) {
int s[24]={1,2,3,4,5,6,7,8,9,153,370,371,407,1634,8208,9474,54748,92727,93084,548834,1741725,4210818,9800817,9926315};

int n,m;
int n1=0,m1=0;
while(cin>>n>>m){



for(int i=0;i<24;i++){
if(n<=s[i]){
n1=i;
break;
}
}
for(int i=0;i<24;i++){
if(m<s[i]){
m1=i-1;
break;
}
}
if((m1==0&n1==0)|(m1-n1-1)<=0){
cout<<"none ";

}else{
while(m1>=n1){

cout<<s[n1]<<" ";
n1=n1+1;


}
}
cout<<endl;
n,m,n1,m1=0;
}


return 0;
}

#13758: Re:有點偷吃步的解法 c++


timmy940410 (遊艇)


→因為題目給的範圍之內的阿姆斯壯數就只有24個,扣除0的話

所以直接建立一個陣列,裡頭除存所有阿姆斯壯數

然後再把範圍拿去一一比較,答案就出來啦~~

→這樣寫應該比較簡單一點

#include<iostream>

using namespace std;

int main(){

int x,n[24]={1,2,3,4,5,6,7,8,9,153,370,371,407,1634,8208,9474,54748,92727,93084,548834,1741725,4210818,9800817,9926315};

int a,b;

while(cin>>a>>b){

int a1=0,b1=0;

for(int i=23;i>=0;i--){

if(a>n[i]){

a1+=1;

}

}

for(int i=23;i>=0;i--){

if(b>n[i]){

b1+=1;

}

}

if(a1==b1||b1==0){

cout<<"none";

}else{

while(b1>a1){

cout<<n[a1]<<" ";

a1+=1;

}

}

cout<<endl;

}

return 0;

}

#17224: Re:有點偷吃步的解法 c++


ufve0704 (爬 我爬 我爬爬爬 有排行榜這種東西就是要爬 爬過我上面的那...)


→因為題目給的範圍之內的阿姆斯壯數就只有24個,扣除0的話

所以直接建立一個陣列,裡頭除存所有阿姆斯壯數

然後再把範圍拿去一一比較,答案就出來啦~~

→用迴圈解

#include <bits/stdc++.h>

using namespace std;

int main(int argc, char** argv){

int a[24]={1,2,3,4,5,6,7,8,9,153,370,371,407,1634,8208,9474,54748,92727,93084,548834,1741725,4210818,9800817,9926315},b,c;

while(cin>>b>>c){

int f=0;

for(int d=b;d<c;d++){

for(int e=0;e<24;e++){

if(d==a[e]){

cout<<a[e]<<" ";

f=1;

}

}

}

if(f==0)

cout<<"none";

cout<<endl;

}

}