蓝桥杯真题练习-马虎的算式
## 填空题, 2013, 省赛
题目概述
一位同学上课把老师讲的题抄错了,把36∗495抄成了396∗45,但是巧合的是这俩满足乘法交换律的式子结果一样都是17820。问,假如有五个不同的且不为0的数abcde,能满足形如: ab∗cde=adb∗ce这样的算式一共有多少种?(因为满足乘法交换律,所以会有中情况,某式子一的ab与某式子二的ce相等,式子一的cde同时又与式子二的adb相等,这样就会有两种不同的式子,因此最后结果肯定是偶数)
思路
1.既然不让等于0,那写循环的时候直接让循环从1到9。
2.既然有五个数,从左到右排列往里面插入乘号,那就写成五层循环。
3.又要求这五个数不相等,这就需要在最内层先加入一个特殊的判断条件,a与bcde不相等,b与cde不相等,c与de不相等,d与e不相等
4.最后加入ab∗cde=adb∗ce这个式子的判断,满足就++即可(再次提醒,计数器必须在定义时初始化为0)
#include<iostream>
using namespace std;
int main(){
int a,b,c,d,e,sum=0;
for(a=1;a<=9;a++){
for(b=1;b<=9;b++){
for(c=1;c<=9;c++){
for(d=1;d<=9;d++){
for(e=1;e<=9;e++){
if(a!=b&&a!=c&&a!=d&&a!=e&&b!=c&&b!=d&&b!=e&&c!=d&&c!=e&&d!=e){
if((a*10+b)*(c*100+d*10+e)==(a*100+d*10+b)*(c*10+e)){
sum++;
//cout<<a<<b<<"-"<<c<<d<<e<<"|"<<a<<d<<b<<"-"<<c<<e<<endl; 用于检验
}
}
}
}
}
}
}
cout<<sum;
return 0;
}