[PTA]实验4-2-5 水仙花数
Posted Spring-_-Bear
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[PTA]实验4-2-5 水仙花数相关的知识,希望对你有一定的参考价值。
水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=1³+5³+3³。 本题要求编写程序,计算所有N位水仙花数。
输入格式:
输入在一行中给出一个正整数N(3≤N≤7)。
输出格式:
按递增顺序输出所有N位水仙花数,每个数字占一行。
输入样例:
3
输出样例:
153
370
371
407
- 提交结果:
- 源码:
#include<stdio.h>
int power(int x, int n); //求x的n次方,自定义函数解决超时问题
int main(void)
{
int N;
scanf("%d", &N);
int min, max; //N位正整数的最小、最大值
min = power(10, N - 1);
max = power(10, N) - 1;
for (int i = min; i <= max; i++)
{
int sum = 0; //sum位每个数字的每一个数字的对应N次幂之和
int temp = i;
while (temp != 0) //当本次数字i不等于0时
{
int lastNumber = temp % 10; //取得i最末一位数字,例:153->5
temp /= 10; //长度减1,例:153->15
sum += power(lastNumber, N); //累加其最后一位数字的N次幂
}
if (sum == i) //如果本次数字相等即位水仙花数,输出
{
printf("%d\\n", sum);
}
}
return 0;
}
//求x的n次方
int power(int x, int n)
{
int result = 1;
for (int i = 1; i <= n; i++) //循环n次,n个x相乘
{
result *= x;
}
return result;
}
以上是关于[PTA]实验4-2-5 水仙花数的主要内容,如果未能解决你的问题,请参考以下文章