|  | 
 
| 
问题描述:一个各位数字均不相同的七位数,它乘以1、2、3、4、5、6,所得结果的各位数字仍然是它乘之前的各位数字(当然也是各不相同),求出所有的这样的数。例如:1429857*6=8579142,1429857*5=7149285,......
x
马上注册,结交更多好友,享用更多功能^_^您需要 登录 才可以下载或查看,没有账号?立即注册  源码:
 
 #include<stdio.h>
 //该函数用于挑选出各位数字均不相同的七位数,存储在L[7]数组中,成功就返
 回该数组首地址//
 int* Tiaoxuan(int M)
 {
 int i, j;
 int L[7];
 L[0] = M / 1000000;
 L[1] = M / 100000 - L[0] * 10;
 L[2] = M / 10000 - L[0] * 100 - L[1] * 10;
 L[3] = M / 1000 - L[0] * 1000 - L[1] * 100 - L[2] * 10;
 L[4] = M / 100 - L[0] * 10000 - L[1] * 1000 - L[2] * 100 - L[3] * 10;
 L[5] = M / 10 - L[0] * 100000 - L[1] * 10000 - L[2] * 1000 - L[3] * 100 - L[4] * 10;
 L[6] = M - L[0] * 1000000 - L[1] * 100000 - L[2] * 10000 - L[3] * 1000 - L[4] * 100 - L[5] * 10;
 for (i = 0; i < 7; i++)
 {
 for (j = i + 1; j < 7 && L[i] != L[j]; j++);
 if (j<7)
 return NULL;
 }
 return L;
 }
 //该函数用于比较A、B两指针所指向的两个数组的各位数字是否相同//
 int Bijiao(int *A, int *B)
 {
 int flag = 1;
 int i, j;
 for (i = 0; i < 7 && flag; i++)
 {
 for (j = 0; j<7 && A[i] != B[j]; j++);
 if (j>6)
 flag = 0;
 }
 if (i>6)
 return 1;
 else return 0;
 }
 
 int main()
 {
 int i;
 int j = 0;
 int K;
 int T;
 int *P, *Q;
 int N = 1000000;
 while (N<2000000)
 {
 i = 2;
 T = 1;
 P = Tiaoxuan(N);
 if(P)
 {
 while(T && i<7)
 {
 T = 0;
 K = N*i;
 i++;
 if(K<10000000)
 {
 Q = Tiaoxuan(K);
 if(Q)
 T = Bijiao(P,Q);
 }
 }
 if(T)
 {
 j++;
 printf("%d\n",N);
 }
 }
 N++;
 }
 printf("这样的七位数有%d个\n",j);
 return 0;
 }
 
 //程序所得结果有九个数,但里面只有两个数正确。
 | 
 |