水仙花数
时间限制:
1000 ms | 内存限制:
65535 KB
难度:
0
-
描述
-
请判断一个数是不是水仙花数。
其中水仙花数定义各个位数立方和等于它本身的三位数。-
输入
-
有多组测试数据,每组测试数据以包含一个整数n(100<=n<1000)
输入0表示程序输入结束。
输出
-
如果n是水仙花数就输出Yes
否则输出No
样例输入
-
153 154 0
样例输出
-
Yes
No
-
方法【1】:
-
</pre><pre name="code" class="cpp"> # include <stdio.h> int decide(int); int main() { int a = 1, b; while(a != 0) { scanf("%d", &a); if (a != 0) { b = decide(a); puts(b == 1?"Yes":"No"); } } return 0; } int decide(int n) { int a[3]; a[0] = n/100; a[1] = n%100/10; a[2] = n%10; if(a[0]*a[0]*a[0]+a[1]*a[1]*a[1]+a[2]*a[2]*a[2] == n) return 1; else return 0; }
方法【2】: -
# include <stdio.h> # include <string.h> int decide(char *); int main() { char arr[3]; int a = 1,b; while (a != 0) { gets(arr); a = arr[0] - '0'; if (a != 0) { b = decide(arr); puts(b == 1?"Yes":"No"); } } return 0; } int decide(char *p) { int i, sum1, sum2, m; int a[3]; for (i = 0, sum1 = 0; i < 3; i++) { m = *(p + i) - '0'; sum1 += (m*m*m); } a[0] = p[0] - '0'; a[1] = p[1] - '0'; a[2] = p[2] - '0'; sum2 = a[0]*100+a[1]*10+a[2]; if (sum1 == sum2) return 1; else return 0; }
两种方法时间内存都一样 都是时间为0内存为232 -
-
有多组测试数据,每组测试数据以包含一个整数n(100<=n<1000)