描述
变种水仙花数 - 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。
无论是几位数,都要将每一位计算出来参与计算,首先想到的一定是每一位依次计算得出,但深入思考,运用嵌套循环来实现可以较大减少代码量,且思路巧妙、代码复用性也较强。
方法一:
#include<stdio.h>
void Judge(int num, int sum)
{
if (num == sum)
{
printf("%d ",num);
}
}
void Split(int num)
{
//12345
int myriabit = (num / 10000) * (num % 10000);//1*2345
int kilobit = (num / 1000) * (num % 1000); //12*345
int hund = (num / 100) * (num % 100); //123*45
int ten = (num / 10) * (num % 10); //1234*5
int sum = myriabit + kilobit + hund + ten;
Judge(num,sum);
}
int main()
{
int num = 0;
for (num=10000;num<100000;num++)
{
Split(num);
}
return 0;
}
方法二:
#include<stdio.h>
int main()
{
int i, j, sum;
for (i = 10000; i <= 99999; i++)
{
//计算
sum = 0;
for (j = 10; j <= 10000; j *= 10)
sum += (i / j) * (i % j);
if (sum == i)
printf("%d ", i);
}
return 0;
}
祝各位!!!
🏆🏆🏆🏆 🏆🏆🏆🏆 🏆🏆🏆🏆