c语言中怎么表示两个两位数相乘等于一个两位数和一个三位数相乘?限定这些数为1~9,且不重复。
- 提问者网友:你挡着我发光了
- 2021-03-27 01:03
- 五星知识达人网友:玩家
- 2021-03-27 02:35
用了穷尽法代码有点复杂
#include
#include
int main(void)
{
long a = 1, b = 1, c = 1, d = 1;
int aa[9] = {0}, flag = 1, i = 1, j = 1;
for(a = 10; a < 100; a++)
{
for(b = 10; b < 100; b++)
{
for(c = 10; c < 100; c++)
{
for(d = 100; d < 1000; d++)
{
if(a * b == c * d)
{
aa[0] = a / 10;
aa[1] = a % 10;
aa[2] = b / 10;
aa[3] = b % 10;
aa[4] = c / 10;
aa[5] = c % 10;
aa[6] = d / 100;
aa[7] = d % 100 / 10;
aa[8] = d % 10;
for(i = 0; i < 9; i++)
{
for(j = i + 1; j < 9; j++)
{
if(aa[i] == aa[j])
flag = 0;
else
continue;
}
}
if(flag)
printf("%ld * %ld = %ld * %ld
", a, b, c, d); else
flag = 1;
}
}
}
}
}
return 0;
}
追问数组中要不包含0追答#include
#include
int main(void)
{
long a = 1, b = 1, c = 1, d = 1;
int aa[9] = {0}, flag = 1, i = 1, j = 1;
for(a = 10; a < 100; a++)
{
for(b = 10; b < 100; b++)
{
for(c = 10; c < 100; c++)
{
for(d = 100; d < 1000; d++)
{
if(a * b == c * d)
{
aa[0] = a / 10;
aa[1] = a % 10;
aa[2] = b / 10;
aa[3] = b % 10;
aa[4] = c / 10;
aa[5] = c % 10;
aa[6] = d / 100;
aa[7] = d % 100 / 10;
aa[8] = d % 10;
for(i = 0; i < 9; i++)
{
if(aa[i] == 0)
{
flag = 0;
continue;
}
for(j = i + 1; j < 9; j++)
{
if(aa[i] == aa[j])
flag = 0;
else
continue;
}
}
if(flag)
printf("%ld * %ld = %ld * %ld
", a, b, c, d);
else
flag = 1;
}
}
}
}
}
return 0;
}追问左边的两个乘数交换算同一算式,不能重复输出..追答
- 1楼网友:冷風如刀
- 2021-03-27 03:59
for(a1)
for(b1)
.......
if((a1*10+b1)*(a2*10+b2)==( a3*10+b3)*(a4*100+b4*10+c))
printf(....);
大概思路