2750: 猜算式
时间限制: 1 Sec 内存限制: 128 MB Special Judge
提交: 22 解决: 1
题目描述
看下面的算式:
□□ x □□ = □□ x □□□
它表示:两个两位数相乘等于一个两位数乘以一个三位数。
如果没有限定条件,这样的例子很多。
但目前的限定是:这9个方块,表示1~9的9个数字,不包含0。
该算式中1至9的每个数字出现且只出现一次!
比如:
46 x 79 = 23 x 158
54 x 69 = 27 x 138
54 x 93 = 27 x 186
.....
请编程,输出所有可能的情况!
注意:左边的两个乘数交换算同一方案,不要重复输出!
输入
无
输出
提示
乘号用小写字母"x”表示
你 离 开 了 , 我 的 世 界 里 只 剩 下 雨 。 。 。
#include <stdio.h>
int main()
{
for(int a=1; a<=9; a++)
for(int b=1; b<=9; b++)
for(int c=1; c<=9; c++)
for(int d=1; d<=9; d++)
for(int e=1; e<=9; e++)
for(int f=1; f<=9; f++)
for(int g=1; g<=9; g++)
for(int h=1; h<=9; h++)
for(int i=1; i<=9; i++)
{
if(a==b||a==c||a==d||a==e||a==f||a==g||a==h||a==i||b==c||b==d||b==e||b==f||b==g||b==h||b==i)continue;
else if(c==d||c==e||c==f||c==g||c==h||c==i||d==e||d==f||d==g||d==h||d==i||e==f||e==g||e==h||e==i||f==g||f==h||f==i||g==h||g==i||h==i)continue;
if((a*10+b)*(c*10+d)==(e*10+f)*(g*100+h*10+i))printf("%d x %d = %d x %d\n",a*10+b,c*10+d,e*10+f,g*100+h*10+i);
}
return 0;
}
#include <stdio.h>
int main()
{
for(int a=1; a<=9; a++)
for(int b=1; b<=9; b++)
for(int c=1; c<=9; c++)
for(int d=1; d<=9; d++)
for(int e=1; e<=9; e++)
for(int f=1; f<=9; f++)
for(int g=1; g<=9; g++)
for(int h=1; h<=9; h++)
for(int i=1; i<=9; i++)
{
if(a==b||a==c||a==d||a==e||a==f||a==g||a==h||a==i||b==c||b==d||b==e||b==f||b==g||b==h||b==i)continue;
else if(c==d||c==e||c==f||c==g||c==h||c==i||d==e||d==f||d==g||d==h||d==i||e==f||e==g||e==h||e==i||f==g||f==h||f==i||g==h||g==i||h==i)continue;
if((a*10+b)*(c*10+d)==(e*10+f)*(g*100+h*10+i))printf("%d x %d = %d x %d\n",a*10+b,c*10+d,e*10+f,g*100+h*10+i);
}
return 0;
}