YTU 2750: 猜算式

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;
}


posted @ 2016-02-01 21:29  小坏蛋_千千  阅读(218)  评论(0编辑  收藏  举报