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"); } } } }