描述
变种水仙花数 - Lily Number:把任意的数字,从中间拆分成两个数字,比如1461 可以拆分成(1和461),(14和61),(146和1),如果所有拆分后的乘积之和等于自身,则是一个Lily Number。
例如:
655 = 6 * 55 + 65 * 5
1461 = 1*461 + 14*61 + 146*1
求出 5位数中的所有 Lily Number。
解题思路
对于初学者来说,只是单纯的根据题目来理解思路是很难做到的,用例子来解释才是最好的理解。比如根据所给例子,我们稍微变换一下,得到655=(655/100)*(655%100)+(655/10)*(655%10),没看出来?再接着来,1461=(1461/1000)*(1461%1000)+(1461/100)*(1461%100)+(1461/10)*(1461%10),这样一来,是不是有规律了呢,所以,我们可以根据所得出的规律来总结满足条件,如果满足,则输出。
#include <stdio.h>
int main()
{
int i = 0;
for(i=10000; i<=99999; i++)
{
//判断i是否为lily number
int j = 10;
int sum = 0;
int tmp = i;
for(j=10; j<=10000; j*=10)
{
sum += (tmp%j)*(tmp/j);
}
if(sum == i)
printf("%d ", i);
}
return 0;
}