题目描述
输入整数n,求小于n的水仙花数(n<1000)。所谓“水仙花数”是指一个三位正整数ABC,其各位数字的立方和等于该数本身,即
例如,370是一个水仙花数,因为
输入要求
输入一个正整数n(n<1000)
输出要求
输出小于n的所有水仙花数。如果该范围内部不存在水仙花数,则输出No Answer。
#include<stdio.h>
int main(){
int n,g,s,b,i;
scanf("%d",&i);
int flag=0;
for(n=100;n<i;n++){
g=n%10;
s=n/10%10;
b=n/100%10;
if(n==g*g*g+s*s*s+b*b*b){
printf("%d\n",n);
flag=1;
}
}
if(flag==0){
printf("No Answer\n");
}
return 0;
}
水仙花变式
水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。
例如:153=1^3+5^3+3^3。
8208 = 8^4+2^4+0^4+8^4
这道题请写出程序判断输入的数是否为水仙花数。
输入描述:
首先输入正整数 n,表示需要判断的数的个数 (1<=n<=100)
随后每一行输入一个数 a,对于每次输入判断 a是否为水仙花数
输出描述:
每次判断 a输出判断结果:
如果是,输出 yes
否则输出 no
#include <stdio.h>
#include <math.h>
int main()
{
int n = 0,b=0,k=0,m=0;
int a =0;
scanf("%d",&n);
for(int i = 0; i != n; i++)
{
a = 0;
scanf("%d",&a);
b = a;
k = 0,m = 0;
while (b) //b不为0时为真,执行循环
{
m++;
b /= 10; //计算这个数字有多少位
}
b = a;
while(b)
{
k =k+pow(b%10,m);
b =b/10;
}
if(a == k)
printf("yes\n");
else printf("no\n");
}
return 0;
}