以下是引用pangding在2009-8-27 22:24的发言:
能被11整除的数的特点是:奇位上数的和 与 偶位上数的和 的差 是11的倍数(0也行)。
比如你说的341,(一般是从右数)奇位上的数是 1 和 3 ,和是4。偶位上是4。它们的差是4-4=0。因此它是341是11的倍数。
如果有这规律 ...版主的方法好~但是我感觉这里不好用。。。。还是穷举吧~
程序代码:#include "stdio.h"
#include
#include
main()
{
int n[4],i,digit[8],digit_all,digit_left;
int mul[4];
long num,num_turn;
for (n[0]=1;n[0]<=36;n[0]++)
for (n[1]=1;n[1]
for (n[2]=1;n[2]
for (n[3]=1;n[3]
{num=num_turn=0;
for (i=0;i<4;i++)
{if (n[i]>=10) mul[i]=2;
else mul[i]=1;
}
num=n[0]*pow(10,(mul[1]+mul[2]+mul[3]))+
n[1]*pow(10,(mul[2]+mul[3]))+n[2]*pow(10,mul[3])+n[3];
if(num%11==0)
{
digit_all=mul[0]+mul[1]+mul[2]+mul[3];
for (i=0,digit_left=num;i
{digit[i]=digit_left%10;
digit_left=digit_left/10;
}
for (i=0;i
{num_turn=num_turn+digit[i]*pow(10,(digit_all-i-1));
}
if(num_turn%11==0)
{printf("zhengxu %ld\t",num);
printf("daoxu %ld\n",num_turn);
for (i=0;i<4;i++)
printf("%d\t",n[i]);
printf("\n");
}
}
}
}