第四届蓝桥杯第二题马虎的算式

xiaoxiao2021-02-28  66



第二题:

标题: 马虎的算式     小明是个急性子,上小学的时候经常把老师写在黑板上的题目抄错了。     有一次,老师出的题目是:36 x 495 = ?     他却给抄成了:396 x 45 = ?     但结果却很戏剧性,他的答案竟然是对的!!     因为 36 * 495 = 396 * 45 = 17820     类似这样的巧合情况可能还有很多,比如:27 * 594 = 297 * 54     假设 a b c d e 代表1~9不同的5个数字(注意是各不相同的数字,且不含0)     能满足形如: ab * cde = adb * ce 这样的算式一共有多少种呢? 请你利用计算机的优势寻找所有的可能,并回答不同算式的种类数。 满足乘法交换律的算式计为不同的种类,所以答案肯定是个偶数。 答案直接通过浏览器提交。 注意:只提交一个表示最终统计种类数的数字,不要提交解答过程或其它多余的内容。

暴力或者深搜

#include<iostream> #include<cstdio> #include<cstring> using namespace std; int num[11]={0,1,2,3,4,5,6,7,8,9}; int sum=0; int ans[6]; int vis[11]; void dfs(int n) { if(n==6) { int x=(ans[1]*10+ans[2])*(ans[3]*100+ans[4]*10+ans[5]); int y=(ans[1]*100+ans[4]*10+ans[2])*(ans[3]*10+ans[5]); if(x==y) { cout<<ans[1]<<ans[2]<<" "<<ans[3]<<ans[4]<<ans[5]<<endl; sum++; } return; } for(int i=1;i<10;i++) { if(vis[i]==0) { ans[n]=num[i]; vis[i]=1; dfs(n+1); vis[i]=0; } } } int main() { memset(vis,0,sizeof(vis)); dfs(1); cout<<sum; }

转载请注明原文地址: https://www.6miu.com/read-53533.html

最新回复(0)