下列除式中仅在商中给定了一个7,其他全是任意数字,请还原
1 X7XXX
______________
2 XXX|XXXXXXXX
3 XXXX
4 _____________
5 XXX
6 XXX
7 _______________
8 XXXX
9 XXX
10 _____________
11 XXXX
12 XXXX
13 ____________
0
程序:
#include <stdio.h>
int main()
{
int i;
int j;
int k;
int m;
int n;
int l;
int x;
int y;
int z;
int t;
int e;
int p;
int q;
int cont = 0;
int a[4];
int c[5];
for (a[0] = 1000; a[0] < 10000; a[0]++)
{
for (a[1] = 0; a[1] < 10; a[1]++)
{
for (a[2] = 0; a[2] < 10; a[2]++)
{
for (a[3] = 10; a[3] < 100; a[3]++)
{
for (j = 100; j < 1000; j++)
{
i = a[0]*10000+a[1]*1000+a[2]*100+a[3];
x= i/j;
if (i % j == 0 && x > 10000 && x < 100000)
{
for (k = 0, l = 10000; k < 5; k++)
{
c[k] = x/l;
x %= l;
l /= 10;
}
x = i/j;
y = c[0]*j;
z = (a[0] - y)*10 + a[1];
m = c[1] * j;
n = (z - m)*10 + a[2];
e = c[2] * j;
p = (n - e)*100 +a[3];
q = (c[3]*10+c[4])*j;
if (c[1] == 7 && p == q && y > 1000 && y < 10000 && z > 100 &&
z < 1000 && m > 100 && m < 1000 && n > 1000 && n < 10000 &&
e > 100 && e < 1000 && p > 1000 && p < 10000 && c[3] == 0)
{
cont++;
printf("NO. %d : %d/%d = %d\n", cont, i, j, x);
printf("%d %d %d %d %d %d %d\n",y,z,m,n,e,p,q);
break;
}
}
}
if (cont)
break;
}
if (cont)
break;
}
if (cont)
break;
}
if (cont)
break;
}
return 0;
}
将此题的被除数分为4部分,第一部分是前4个数,第二部分是第五个数,第三部分是第六个数,第四部分是最后两个数,依次与商的各位相乘。这里需要注意商的第四位是0,因为五位数的商只有四个乘积且第一二三次一次退一位,第四次退了两位。加上判定各个数的位数,遍历判断即可求出答案为:12128316/124 = 97809