PTA 7-188 水任务描述
本关任务:输出100到999之间的所有的“水仙花数”。所谓的“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。
例如,153是一个水仙花数,因为
153=1
3
+5
3
+3
3
提示
关键在于对一个三位整数 n 进行分解,得出他各个数位上的数字。下面介绍一种方法:
求百位数的数字i = n/100; 例如,123/100=1,求出百位数字
求十位上的数字j = n/10%10; 例如,123/10=12,12%10=2,求出十位数字
求个位上的数字k = n%10; 例如,123%10=3,求出个位数字
输入格式:
无
输出格式:
按递增顺序输出所有水仙花数,每个数输出占5列。
输入样例:
输出样例:
153 370 371 407
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB仙花数
代码:
#include <stdio.h>
#include <math.h>
int main(){
int unit, decade, hunder; //个, 十, 百
int cubic_sum; //各位数字的立方和
for(int i = 100; i < 1000; i++){
unit = i % 10; //个位
decade = i / 10 % 10; //十位
hunder = i / 100; //百位
cubic_sum = pow(unit, 3) + pow(decade, 3) + pow(hunder, 3); //各位数字的立方和
if(cubic_sum == i){ //若各位数字的立方和等于该数本身
printf(" %d", i);
}
}
return 0;
}
解题思路:
step1:取出个,十,百位
step2:算出各位数字的立方和
step3:判断是否满足水仙花数的条件
归属知识点:
条件判断
循环结构