题目:马虎的算式(5分)
小明是个急性子,上小学的时候经常把老师写在黑板上的题目抄错了。有一次,老师出的题目是:36*495=?他却给抄成了:396*45=?但结果却很戏剧性,他的答案竟然是对的!
因为36*495=396*45=17820,类似的巧合情况可能还有很多,比如:27*594=297*54。假设a b c d e代表1~9不同的5个数字(注意是各不相同的数字,且不含0),能满足形如:ab*cde=adb*ce这样的算式一共有多少种呢?
请你利用计算机的优势寻找所有的可能,并回答不同算式的种类数。满足乘法交换律的算式计为不同的种类,所以答案肯定是个偶数。
解题思路:暴力,五层for循环
#include<iostream>
using namespace std;
int main()
{
int cnt = 0;
for(int a=1; a<10; ++a){
for(int b=1; b<10; ++b){
if(a==b)continue;
for(int c=1; c<10; ++c){
if(a==c || b==c)continue;
for(int d=1; d<10; ++d){
if(a==d || b==d || c==d)continue;
for(int e=1; e<10; ++e){
if(a==e || b==e || c==e || d==e)continue;
int ab = a*10+b, cde = c*100+d*10+e;
int adb = a*100+d*10+b, ce = c*10+e;
if(ab*cde == adb*ce){
cnt++;
}
}
}
}
}
}
cout << cnt;
return 0;
}