标题: 马虎的算式
小明是个急性子,上小学的时候经常把老师写在黑板上的题目抄错了。
有一次,老师出的题目是: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 这样的算式一共有多少种呢?
请你利用计算机的优势寻找所有的可能,并回答不同算式的种类数。
满足乘法交换律的算式计为不同的种类,所以答案肯定是个偶数。
答案直接通过浏览器提交。
注意:只提交一个表示最终统计种类数的数字,不要提交解答过程或其它多余的内容。
思路:a b c d e 五个参数循环遍历,if条件保证数字各不相等。if判断是否满足条件,满足乘法交换律的为不同种类,就不用考虑总数除以2。最后输出总数。
过程:五层循环-->if保证各个元素不相等-->if判断是否满足条件-->满足条件log计数-->输出log。
#include <stdio.h> int main() { int a,b,c,d,e,t1,t2,log=0; for(a=1; a<10; a++) { //五层循环尝试五个参数所有可能的值。 for(b=1; b<10; b++) { if(a==b) continue; //保证参数不能相等。 for(c=1; c<10; c++) { if(c==b||c==a) continue; for(d=1; d<10; d++) { if(d==a||d==b||d==c) continue; for(e=1; e<10; e++) { if(e==d||e==a||e==b||e==c) continue ; t1=(a*10+b)*(c*100+d*10+e); //参数转为数字 t2=(a*100+d*10+b)*(c*10+e); if(t1==t2) { //若是相等就是满足题意,计数加1。 log++; } } } } } } printf("%d\n",log); //输出结果 return 0; }
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复