题目来源:BC38-变种水仙花数
描述
变种水仙花数 - 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)*(6550) (655/10)*(655),没看出来?再接着来,1461=(1461/1000)*(146100) (1461/100)*(14610) (1461/10)*(1461),这样一来,是不是有规律了呢,所以,我们可以根据所得出的规律来总结满足条件,如果满足,则输出。
代码语言:javascript复制#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;
}