【程序设计】变异水仙花数 - Daffy Number
--------------------------------------------------
Is it the number of daffy
功能:
函数 isDaffyNum 的功能:判断某整数(小于100000)是否变异水仙花数 - Daffy Number
Daffy Number:把任意的数字,从中间拆分成两个数字,
如果所有拆分后的乘积之和等于自身,则是一个Daffy Number。
例如:
1461 可以拆分成(1和461),(14和61),(146和1),
655 可以拆分成(6和55),(65和5)
655 = 6 * 55 + 65 * 5
1461 = 1*461 + 14*61 + 146*1
注意:请勿改动主函数main和其他函数中的任何内容,
仅在函数的花括号中Begin 与 End间填入你编写的若干语句。
测试样例TestCase:
1000
655
2000
655 1461 1642
#include <stdio.h>
int isDaffyNum(int i){
/********** Begin **********/
int y,sum;
sum=0;
if (i<10)
y=1;
else if (10<=i<100)
y=2;
else if (100<=i<1000)
y=3;
else if (1000<=i<10000)
y=4;
else if (10000<=i<100000)
y=5;
switch (y)
{
case 1: sum=0;break;
case 2: sum=(i/10)*(i%10);break;
case 3: sum=(i/100)*(i%100)+(i/10)*(i%10);break;
case 4: sum=(i/1000)*(i%1000)+(i/100)*(i%100)+(i/10)*(i%10);break;
case 5: sum=(i/10000)*(i%10000)+(i/1000)*(i%1000)+(i/100)*(i%100)+(i/10)*(i%10);break;
}
if (sum==i)
return 1;
else
return 0;
/********** End *********/
}
int main()
{
int x, i;
scanf("%d",&x);
for(i=1;i<=x;i++){
if(isDaffyNum(i))
printf("%d ",i);
}
printf("\n");
return 0;
}
显然不对啊...给的数据可能超过10000,这种题正确写法应该是循环取模