|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
问题描述:一个各位数字均不相同的七位数,它乘以1、2、3、4、5、6,所得结果的各位数字仍然是它乘之前的各位数字(当然也是各不相同),求出所有的这样的数。例如:1429857*6=8579142,1429857*5=7149285,......
源码:
#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;
}
//程序所得结果有九个数,但里面只有两个数正确。 |
|