3540 - 猜算式(蓝桥杯真题)
看下面的算式:
□□ 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代替,符号与数字之间有一个空格)
Input
Output
Examples
Input
Output
Solution C++
#include<iostream> #include<algorithm> using namespace std; int main() { int p[9]={1,2,3,4,5,6,7,8,9}; do { if((p[0]<p[2])&&(p[0]*10+p[1])*(p[2]*10+p[3])==(p[4]*10+p[5])*(p[6]*100+p[7]*10+p[8])) cout<<p[0]<<p[1]<<" x "<<p[2]<<p[3]<<" = "<<p[4]<<p[5]<<" x "<<p[6]<<p[7]<<p[8]<<endl; } while(next_permutation(p,p+9)); return 0; }