PTA 7-472 有趣的三位数
分数 10
作者 程立
单位 河南工业大学
数字中有很多有趣的三位数,像,大家熟知的水仙花数,其各位数字的立方和等于该数本身。拿153来说,我们有:153 = 1
3
+5
3
+3
3
。
本题在上述的表达式上做一些变化,求三位数ABC使得 ABC=A
1
+B
2
+C
3
。
本题要求编写程序,输出给定正整数M和N区间内的所有三位数ABC使得 ABC=A
1
+B
2
+C
3
。
输入格式:
输入在一行中给出两个正整数M和N(100≤M≤N≤999)。
输出格式:
顺序输出M和N区间内所有符合要求的三位数,每一行输出一个数。若该区间内没有符合要求的三位数,则输出"Not Found"。
输入样例1:
在这里给出一组输入。例如:
100 500
输出样例1:
在这里给出相应的输出。例如:
135
175
输入样例2:
在这里给出一组输入。例如:
800 900
输出样例2:
在这里给出相应的输出。例如:
Not Found
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include <stdio.h>
#include <math.h>
void place(int inte, int *p){ //拆分各位
int _inte = inte;
while(_inte > 0){
*p = _inte % 10;
_inte /= 10;
p++;
}
}
int main(){
int m, n, sum, flag = 0;
int number[3];
int *arr = NULL; //定义指针
arr = &number; //指向数组首地址
scanf("%d %d", &m, &n);
for(int i = m; i <= n; i++){ //范围内的数
sum = 0; //求和
place(i, arr); //调用函数
sum = pow(number[0], 3) + pow(number[1], 2) + number[2];
if(sum == i){ //满足要求时
flag = 1; //标记有符合要求的三位数
printf("%d\n", i);
}
}
if(flag == 0){ //如果没有满足要求的三位数
printf("Not Found\n");
}
return 0;
}
解题思路:
定义一个函数拆分三位数的各位,定义一个数组储存拆分的各位,按要求求和再进行判断是否拆分后按要求求的和是否与原三位数相等
归属知识点:
指针
数组
循环结构
条件判断