你好呀,我是灰小猿,一個超會寫bug的程式猿!
歡迎大家關注我的專欄“每日藍橋”,該專欄的主要作用是和大家分享近幾年藍橋杯省賽及決賽等真題,決議其中存在的演算法思想、資料結構等內容,幫助大家學習到更多的知識和技術!
標題:馬虎的算式
小明是個急性子,上學的時候經常把老師的算式抄錯,
有一次,老師出的題目是: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 這樣的算式一共有多少種呢?
請你利用計算機的優勢尋找所有的可能,并回答不同算式的種類數,
滿足乘法交換律的算式計為不同的種類,所以答案肯定是個偶數
答案直接通過瀏覽器提交
注意:只提交一個表示最終統計種類數的數字,不要提交解答程序或其他多余的內容
解題思路:
本題主要把握題干中所給的重點內容:
假設 a b c d e 代表1~9不同的5個數字(注意是各不相同的數字,且不含0)
能滿足形如:ab * cde = adb * ce 這樣的算式一共有多少種呢?
所以我們可以通過列舉的方式將所有可能的組合全都找出來并進行判斷,
同時對符合要求的式子的數量進行統計即可,
答案原始碼:
package 一三年省賽真題; public class Year2013_t3 { /** * 假設 a b c d e 代表1~9不同的5個數字(注意是各不相同的數字,且不含0) 能滿足形如:ab * cde = adb * ce 這樣的算式一共有多少種呢? * */ public static void main(String[] args) { int count = 0; for (int a = 1; a < 10; a++) { for (int b = 1; b < 10; b++) { if (a!=b) { for (int c = 1; c < 10; c++) { if (c!=a&&c!=b) { for (int d = 1; d < 10; d++) { if (d!=a&&d!=b&&d!=c) { for (int e = 1; e < 10; e++) { if (e!=a&&e!=b&&e!=c&&e!=d) { int x = (a*10+b)*(c*100+d*10+e); int y = (a*100+d*10+b)*(c*10+e); if (x==y) { count++; System.out.printf("(%d*10+%d)*(%d*100+%d*10+%d)==(%d*100+%d*10+%d)*(%d*10+%d)==%d\n",a,b,c,d,e,a,d,b,c,e,x); } } } } } } } } } } System.out.println(count); } }
輸出樣例:
其中有不足或者改進的地方,還希望小伙伴留言提出,一起學習!
感興趣的小伙伴可以關注專欄!
灰小猿陪你一起進步!

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/248136.html
標籤:其他
上一篇:很多人覺得C++模板很難學習和適應,不值得浪費時間,今天它的白癡指南來了(第一部分)
下一篇:2020年總結

