题解 | 水仙花数
水仙花数
https://www.nowcoder.com/practice/dc943274e8254a9eb074298fb2084703
#include <stdio.h>
int isnar (int num){
int original = num ; //用于保存原始数值
int sum = 0 ; //用于计算各位数字的幂和
int digits = 0 ; //数字的位数
int temp = num ; //临时变量,用于计算
//计算数字的位数
while (temp!=0){
digits++ ;
temp/=10 ;
}
//计算各位数字的幂和
temp = num ; //重置temp
while (temp != 0) {
int digit = temp%10 ;//获取最后一位数字
sum += pow(digit,digits) ;//计算幂和
temp /= 10 ;//去掉最后一位数字
}
return sum == original ;//判断等号两边是否相等
}
int main(){
int start,end ;//储存用户输入的起始值和结束值
int found = 0 ;//标记是否找到水仙花数
while (scanf("%d %d",&start,&end)!=EOF) {
for (int i = start ;i <= end;i++) {
if (isnar(i)) {
printf("%d ",i) ;
found = 1 ;
}
}
if (!found){
printf("no");
}
printf("\n");
}
return 0 ;
}
查看11道真题和解析