大家帮忙看看这道水仙花数题啊
这是一道水仙花数的题但是这个水仙花数不止,不一定是三位的。
我本人苦思冥想仍无能为力。
请先生教我!!
水仙花数(daffodils number)是指一个 n 位数 ( n ≥ 3 ),它的每个位上的数字的 n 次幂之和等于它本身。
例如:1^3 + 5^3 + 3^3 = 153
有多个测试用例,每个测试用例占一行,是一个正整数n ( 3 ≤ n ≤ 6 )
对每个测试用例,从小到大输出所有n位的水仙花数,一个一行。
2015-11-15 22:52
2015-11-15 22:58
2015-11-15 23:17
2015-11-16 09:20
程序代码:#include <stdio.h>
int main( void )
{
unsigned map[11][9];
for( unsigned n=0; n!=11; ++n )
{
map[n][0] = 1;
for( unsigned m=1; m!=9; ++m )
map[n][m] = map[n][m-1] * n;
}
for( unsigned n=100,m=3; n!=100000000; ++n )
{
if( n >= map[10][m] )
++m;
unsigned sum = 0;
for( unsigned t=n; t; t/=10 )
sum += map[t%10][m];
if( sum == n )
printf( "%u\n", n );
}
return 0;
}输出
2015-11-16 09:23
2015-11-16 13:24
2015-11-16 13:26
2015-11-16 14:14
2015-11-16 14:40
2015-11-16 15:42