Problem Description
春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,是这样定义的:
“水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=1 3+5 3+3 3。
现在要求输出所有在m和n范围内的水仙花数。
“水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=1 3+5 3+3 3。
现在要求输出所有在m和n范围内的水仙花数。
Input
输入数据有多组,每组占一行,包括两个整数m和n(100<=m<=n<=999)。
Output
对于每个测试实例,要求输出所有在给定范围内的水仙花数,就是说,输出的水仙花数必须大于等于m,并且小于等于n,如果有多个,则要求从小到大排列在一行内输出,之间用一个空格隔开;
如果给定的范围内不存在水仙花数,则输出no;
每个测试实例的输出占一行。
如果给定的范围内不存在水仙花数,则输出no;
每个测试实例的输出占一行。
Example Input
100 120 300 380
Example Output
no370 371
第一次的错误答案:
#include<iostream> using namespace std; int main() { int a, b, c, d, e, count = 0, t[900]; while (cin >> a >> b) { for (int i = a; i <= b; i++) { c = i / 100; d = (i - c * 100)/ 10; e = i - c * 100 - d * 10; if (i == c * c * c + d * d * d + e * e * e) { t[count] = i; count++; } } if (count == 0) { cout<< "no" <<endl; } else { for (int s = 0; s < count; s++) { cout<< t[s] << " ";//提交后提示presentation error,因为输出格式不正确,因为在最后一个数据输出后还会带一个空格 } cout<<endl; count = 0; } } return 0; }
正确答案:
#include<iostream> using namespace std; int main() { int a, b, c, d, e, count = 0, t[900]; while (cin >> a >> b) { for (int i = a; i <= b; i++) { c = i / 100; d = (i - c * 100)/ 10; e = i - c * 100 - d * 10; if (i == c * c * c + d * d * d + e * e * e) { t[count] = i; count++; } } if (count == 0) { cout<< "no" <<endl; } else { for (int s = 0; s < count; s++) { if ( s != count - 1) cout<< t[s] << " "; else cout<< t[s] <<endl; } count = 0; } } return 0; }
细心很重要,题不难,要考虑周全,注意题目要求