一原题
二,解题思路
写一个双循环
第一个循环确定,10000-99999之间的数字
第二个循环确定,可以拆分的位数
(比如说,第一次拆分34420)
则需要
第一次循环
34420 % 10000(10^4)取得后半部分拆分
34420 /10000(10^4)取得前半部分拆分
二者相乘得第一次积
第二次循环
34420 % 1000(10^3)取得后半部分拆分
34420 /1000(10^3)取得前半部分拆分
二者相乘得第二次积
第三次循环
34420 % 100(10^2)取得后半部分拆分
34420 /100(10^2)取得前半部分拆分
二者相乘得第二次积
.................
最后各次积相加得到sum
判断sum是否与原数字相同,相同则输出
三,程序输出
四,源码
int my_pow(int x, int y)
{
if (y > 0)
return x * my_pow(x, y - 1);
else
return 1;
}
int main()
{
int num = 0, count = 0;
int sum = 0, ji = 0;
int qian_mian = 0, hou_mian = 0;
for (num = 10000; num <= 99999; num++)
{
sum = 0;
for (int hou_mian_shu_wei_shu = 4; hou_mian_shu_wei_shu > 0; hou_mian_shu_wei_shu--)
{
qian_mian = num / (my_pow(10, hou_mian_shu_wei_shu));
hou_mian = num % (my_pow(10, hou_mian_shu_wei_shu));
ji = qian_mian * hou_mian;
sum += ji;
if (sum == num && hou_mian_shu_wei_shu == 1)
{
printf("%d\n", sum);
count++;
}
}
}
printf("%d\n", count);
return 0;
}