c语言数学题
某人购买的体育彩票猜中了4个号码,这4个号码按照从大到小的顺序组成一个数字可被11整除,将其颠倒过来也可被11整除,编写函数求符合这样条件的4个号码。可被11整除颠倒过来也可被11整除的正整数例如341,它可被11整除,颠倒过来143也可被11整除。体育彩票采用整数1、2、3、……、36表示36种体育运动。这个要怎么做??难道要4曾循环挨个试?
求高手解答~
程序代码:#include "stdio.h"
#include <math.h>
#include <stdlib.h>
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]<n[0];n[1]++)
for (n[2]=1;n[2]<n[1];n[2]++)
for (n[3]=1;n[3]<n[2];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_all;i++)
{digit[i]=digit_left%10;
digit_left=digit_left/10;
}
for (i=0;i<digit_all;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");
}
}
}
}