[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 水仙花数的主要内容,如果未能解决你的问题,请参考以下文章

[PTA]习题5-6 使用函数输出水仙花数

第三周课程总结实验报告

第三周课程总结及实验报告

第三周课程总结&实验报告一

第三周课程总结&实验报告一

第三周课程总结&实验报告一