#include<stdio.h>
#include<math.h>
int main()
{
int n,m,i,j,k,x,y,l;
while(scanf("%d %d",&m,&n)!=EOF)
{
for(i=m,l=0;i<=n;i++)
{
j=i/100;
k=i/10%10;
x=i%10;
y=(j*j*j+k*k*k+x*x*x);
if(i==y)
printf("%d ",l=i);
}
if(l==0)
printf("no\n");
else
printf("\b\n");
}
return(0);
}
运行完全没问题 就是不能AC 我纠结好久了 就是找不出问题来
15 个解决方案
#1
这个程序就是从m开始到n中间的水仙花数都打出来,有一个while的作用是为了能多次输入结果。可以不用while()的
scanf()的返回值有0和1,当输入是符合条件就是1
scanf()的返回值有0和1,当输入是符合条件就是1
#2
ACM出这种题目?这个源代码是你们写的?
#3
对啊。。。。。
#4
void main()
{
int n,i,j,k,sum;
printf("所有的水仙花数如下:\n");
for (n=100;n<1000;n++)
{
i = n%10;
j = n/10%10;
k = n/100;
sum = i*i*i+j*j*j+k*k*k;
if(n == sum)
{
printf("%d\t",n);
}
}
printf("\n");
}
#5
你那样的代码真的看不上、、、
#6
还是这个代码简单清晰啊
#8
主要是格式的问题啊
#9
春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的:
“水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=1^3+5^3+3^3。
现在要求输出所有在m和n范围内的水仙花数。
Input
输入数据有多组,每组占一行,包括两个整数m和n(100<=m<=n<=999)。
Output
对于每个测试实例,要求输出所有在给定范围内的水仙花数,就是说,输出的水仙花数必须大于等于m,并且小于等于n,如果有多个,则要求从小到大排列在一行内输出,之间用一个空格隔开;
如果给定的范围内不存在水仙花数,则输出no;
每个测试实例的输出占一行。
Sample Input
100 120
300 380
Sample Output
no
370 371
这是原题
“水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=1^3+5^3+3^3。
现在要求输出所有在m和n范围内的水仙花数。
Input
输入数据有多组,每组占一行,包括两个整数m和n(100<=m<=n<=999)。
Output
对于每个测试实例,要求输出所有在给定范围内的水仙花数,就是说,输出的水仙花数必须大于等于m,并且小于等于n,如果有多个,则要求从小到大排列在一行内输出,之间用一个空格隔开;
如果给定的范围内不存在水仙花数,则输出no;
每个测试实例的输出占一行。
Sample Input
100 120
300 380
Sample Output
no
370 371
这是原题
#10
关键是你的不支持多组输入,一次性输出。。。。
看看人家的格式要求,不是输入一次输出一次,而是输入多从,一次性全部输出来。
#include <stdio.h>
#include <math.h>
int main()
{
int i, j;
int m = 0, n = 0;
int ans1, ans2, ans3;
int mm[100], nn[100];
printf("input m and n: (100<=m<=n<=999)\n");
while(scanf("%d %d", &(mm[m++]), &(nn[n++])) != EOF)
;
for(j = 0; j < m - 1; j++)
{
int flag = 0;
for(i=mm[j]; i <=nn[j]; i++)
{
ans1 = i % 10;
ans2 = (i/10) % 10;
ans3 = (i/100) % 10;
if(i == (int)pow(ans1, 3) + (int)pow(ans2, 3) + (int)pow(ans3, 3))
{
printf("%d ", i);
flag = 1;
}
}
if(flag == 0)
printf("no");
printf("\n");
}
return 0;
}
#11
#include<stdio.h>
#include<conio.h>
main()
{
int i,j,k,n;
printf("'water flower'number is:");
for(n=100;n<1000;n++)
{
i=n/100;
j=(n-i*100)/10;
k=n%10;
if(i*i*i+j*j*j+k*k*k==n)
printf("%d\n",n);
}
getch();
}
#include<conio.h>
main()
{
int i,j,k,n;
printf("'water flower'number is:");
for(n=100;n<1000;n++)
{
i=n/100;
j=(n-i*100)/10;
k=n%10;
if(i*i*i+j*j*j+k*k*k==n)
printf("%d\n",n);
}
getch();
}
#13
我貌似用\b去掉空格了啊 还是不能AC
#14
晕了,在ACM里,对格式的输出掌握也很重要。
就比如说每两个数之间有空格,这时最后一个数后面就不能有空格了,那么输出就不能单纯的printf("%c ", ...);
而应该判断是否是最后一位再输出。
建议你看下HDOJ的课件,第一个就是介绍各种输出格式的。
#15
你可以加这个群和大家一起讨论下,是ACM群:
119154131
119154131
#1
这个程序就是从m开始到n中间的水仙花数都打出来,有一个while的作用是为了能多次输入结果。可以不用while()的
scanf()的返回值有0和1,当输入是符合条件就是1
scanf()的返回值有0和1,当输入是符合条件就是1
#2
ACM出这种题目?这个源代码是你们写的?
#3
对啊。。。。。
#4
void main()
{
int n,i,j,k,sum;
printf("所有的水仙花数如下:\n");
for (n=100;n<1000;n++)
{
i = n%10;
j = n/10%10;
k = n/100;
sum = i*i*i+j*j*j+k*k*k;
if(n == sum)
{
printf("%d\t",n);
}
}
printf("\n");
}
#5
你那样的代码真的看不上、、、
#6
还是这个代码简单清晰啊
#7
baike.baidu.com/view/152077.htm
楼上说的很清楚了,再看看这个吧!
楼上说的很清楚了,再看看这个吧!
#8
主要是格式的问题啊
#9
春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的:
“水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=1^3+5^3+3^3。
现在要求输出所有在m和n范围内的水仙花数。
Input
输入数据有多组,每组占一行,包括两个整数m和n(100<=m<=n<=999)。
Output
对于每个测试实例,要求输出所有在给定范围内的水仙花数,就是说,输出的水仙花数必须大于等于m,并且小于等于n,如果有多个,则要求从小到大排列在一行内输出,之间用一个空格隔开;
如果给定的范围内不存在水仙花数,则输出no;
每个测试实例的输出占一行。
Sample Input
100 120
300 380
Sample Output
no
370 371
这是原题
“水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=1^3+5^3+3^3。
现在要求输出所有在m和n范围内的水仙花数。
Input
输入数据有多组,每组占一行,包括两个整数m和n(100<=m<=n<=999)。
Output
对于每个测试实例,要求输出所有在给定范围内的水仙花数,就是说,输出的水仙花数必须大于等于m,并且小于等于n,如果有多个,则要求从小到大排列在一行内输出,之间用一个空格隔开;
如果给定的范围内不存在水仙花数,则输出no;
每个测试实例的输出占一行。
Sample Input
100 120
300 380
Sample Output
no
370 371
这是原题
#10
关键是你的不支持多组输入,一次性输出。。。。
看看人家的格式要求,不是输入一次输出一次,而是输入多从,一次性全部输出来。
#include <stdio.h>
#include <math.h>
int main()
{
int i, j;
int m = 0, n = 0;
int ans1, ans2, ans3;
int mm[100], nn[100];
printf("input m and n: (100<=m<=n<=999)\n");
while(scanf("%d %d", &(mm[m++]), &(nn[n++])) != EOF)
;
for(j = 0; j < m - 1; j++)
{
int flag = 0;
for(i=mm[j]; i <=nn[j]; i++)
{
ans1 = i % 10;
ans2 = (i/10) % 10;
ans3 = (i/100) % 10;
if(i == (int)pow(ans1, 3) + (int)pow(ans2, 3) + (int)pow(ans3, 3))
{
printf("%d ", i);
flag = 1;
}
}
if(flag == 0)
printf("no");
printf("\n");
}
return 0;
}
#11
#include<stdio.h>
#include<conio.h>
main()
{
int i,j,k,n;
printf("'water flower'number is:");
for(n=100;n<1000;n++)
{
i=n/100;
j=(n-i*100)/10;
k=n%10;
if(i*i*i+j*j*j+k*k*k==n)
printf("%d\n",n);
}
getch();
}
#include<conio.h>
main()
{
int i,j,k,n;
printf("'water flower'number is:");
for(n=100;n<1000;n++)
{
i=n/100;
j=(n-i*100)/10;
k=n%10;
if(i*i*i+j*j*j+k*k*k==n)
printf("%d\n",n);
}
getch();
}
#12
#13
我貌似用\b去掉空格了啊 还是不能AC
#14
晕了,在ACM里,对格式的输出掌握也很重要。
就比如说每两个数之间有空格,这时最后一个数后面就不能有空格了,那么输出就不能单纯的printf("%c ", ...);
而应该判断是否是最后一位再输出。
建议你看下HDOJ的课件,第一个就是介绍各种输出格式的。
#15
你可以加这个群和大家一起讨论下,是ACM群:
119154131
119154131