作者在 2012-03-19 20:28:19 发布以下内容
水仙花数
时间限制:1000 ms | 内存限制:65535 KB
描述
我们知道,如果一个数是水仙花数,当且仅当它的各位数字的三次方的和与这个数相等。
如153 = 1 ^ 3 + 5 ^ 3 + 3 ^ 3则153是水仙花数
输入数据有若干组,每组一个三位数N(100<=N<=999)
输出每组测试数据一行,如果这个数是水仙花数,则输出“Yes”,否则输出“No”.
样例输入 153 125 样例输出 Yes No 摘自:http://www.bianchengla.com/course/24/practise/problem?id=1677#include<stdio.h>
#include<math.h>
int main()
{
int n=0,a=0,b=0;
while(scanf("%d",&a)
{
n=a;
b=0;
do
{
b=b+pow(a%10,3);
a=a/10;
}while(a);
if(n==b)
{
printf("Yes\n");
}
else
{
printf("No\n");
}
}
return 0;
}
运行超时。1002ms。
改了while里面的循环判断语句
#include<math.h>
int main()
{
int n=0,a=0,b=0;
while(scanf("%d",&a)
{
n=a;
b=0;
do
{
b=b+pow(a%10,3);
a=a/10;
}while(a);
if(n==b)
{
printf("Yes\n");
}
else
{
printf("No\n");
}
}
return 0;
}
#include<stdio.h>
#include<math.h>
int main()
{
int n=0,a=0,b=0;
while(scanf("%d",&a)!=EOF)/////////////
{
n=a;
b=0;
do
{
b=b+pow(a%10,3);
a=a/10;
}while(a);
if(n==b)
{
printf("Yes\n");
}
else
{
printf("No\n");
}
}
return 0;
}
运行时间3ms!#include<math.h>
int main()
{
int n=0,a=0,b=0;
while(scanf("%d",&a)!=EOF)/////////////
{
n=a;
b=0;
do
{
b=b+pow(a%10,3);
a=a/10;
}while(a);
if(n==b)
{
printf("Yes\n");
}
else
{
printf("No\n");
}
}
return 0;
}