/*
Problem B.判断给定正整数是不是“水仙花数”。“水仙花数”是指一个三位数,其各位数字的立方和等于该数,
例如153=1^3+5^3+3^3 -> (1 + 125 + 27)
输入说明:有多组数据,每组数据为一个正整数n(0<n<65536,占一行),为0时表示输入结束。
输出说明:对于每一组数据,输出一个yes或no(表示该数是否为“水仙花数”)。
输入样本:
153
111
370
422
0
输出样本:
yes
no
yes
no
10
100
1000
*/
#include<stdio.h>
#include<stdlib.h>
typedef struct node{
int data;
struct node *next;
}Linklist;
int main(void){
int num;
Linklist *head,*p,*q;
head=p=NULL;
while(1){
scanf("%d",&num);
if(num==0){
break;
}
q=(Linklist *)malloc(sizeof(Linklist));
q->data=getNum(num);
q->next=NULL;
if(head==NULL){
head=p=q;
}else{
p->next=q;
p=q;
}
}
while(head!=NULL){
if(head->data==0){
printf("no\n");
}else{
printf("yes\n");
}
head=head->next;
}
return 0;
}
int getNum(int num){
int result=0;
int copy=num;
int temp;
while(num!=0){
temp=num%10;
num/=10;
result+=temp*temp*temp;
}
if(copy==result){
return 1;
}else{
return 0;
}
}
水仙花数
最新推荐文章于 2024-10-23 23:04:28 发布