小小水仙花

什么是水仙花数呢?  

水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗 数(Armstrong number),水仙花数是指一个 n 位数(n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。

实现:当n=3是求其1000以内的水仙花数:

<span style="font-size:14px;">#include<stdio.h>
int main()
{
	int i;
	int a,b,c;
	int count = 0;
	for(i = 100;i<1000;i++)
	{
		a = i/100;
		b = i/10-a*10;
		c = i%10;
		if(a*a*a +b*b*b +c*c*c==i)
			printf("%d\n",i);
	}
 return 0;
}</span>
当要输出任意n位的水仙花数

<span style="font-size:14px;">#include<stdio.h>
int func(int a,int b);
int main()
{
	int num = 0;
	int count = 0;
	scanf("%d",&num);
	for(int i=func(10,num-1);i<func(10,num);i++)
	{
		int sum = 0;
		int k = i;
		for(int j=1;j<=num;++j)
		{
			count = k%10;
			sum+=func(count,num);
			k/=10;
		}
		if(sum ==i)
		{
			printf("%d\n",i);
		}
	}
 return 0;
}
int func(int a,int b)
{
	int m= 0;
	int sum = 1;
	for(int i=1;i<=b;i++)
	{
		sum*=a;
	}
	return sum;
}
</span>



猜你喜欢

转载自blog.csdn.net/u013250424/article/details/45337141