“水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=1^3+5^3+3^3。现在要求输出所有在m和n范围内的水仙花数。
输入数据有多组,每组占一行,包括两个整数m和n(100<=m<=n<=999)。
对于每个测试实例,要求输出所有在给定范围内的水仙花数,就是说,输出的水仙花数必须大于等于m,并且小于等于n,如果有多个,则要求从小到大排列在一行内输出,之间用一个空格隔开(注意每组输出的最后一个数之后不要加空格);如果给定的范围内不存在水仙花数,则输出no;每个测试实例的输出占一行。
代码:
#include <stdio.h>
int main(){
int m,n,a,b,c; //100<=m<=n<=999
int arr[1000];int top=0;
while(scanf("%d %d",&m,&n)!=EOF){
int num=m;
top=0;
for(;num<=n;num++){
a=num/100;
b=(num%100)/10;
c=(num%100)%10;
if(num==((a*a*a)+(b*b*b)+(c*c*c)))arr[top++]=num; //数组栈存储水仙花数
}
if(top==0)printf("no\n");
else {
for(int i=0;i<top;i++){
printf("%d",arr[i]);
if (i<top-1)printf(" ");
else printf("\n"); //输出格式
}
}
}
return 0;
}
这段代码是用来找出在指定范围[m, n]内的所有水仙花数。水仙花数是指一个三位数,其各位数字立方和等于其本身。程序通过遍历该范围内的每个数,检查是否满足水仙花数的条件,并将符合条件的数存入数组。如果范围内没有水仙花数,输出no;否则,按升序输出所有找到的水仙花数。

4万+

被折叠的 条评论
为什么被折叠?



