BC38-变种水仙花数

2024-01-23 14:52:35 浏览数 (2)

题目来源: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;
}

0 人点赞