【蓝桥杯】【马虎的算式】
2017-11-06 15:40
204 查看
【题目】
小明是一个急性子,上小学的时候经常把老师写在黑板上的题目抄错。
有一次,老师出得题目是: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这样的算式一共有多少种呢?
【分析】
构造5个元素的数组,从9个数字的数组中取数字,找出所有的可能性。
注意递归和回溯。
【源码】
【结果】
142
小明是一个急性子,上小学的时候经常把老师写在黑板上的题目抄错。
有一次,老师出得题目是: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这样的算式一共有多少种呢?
【分析】
构造5个元素的数组,从9个数字的数组中取数字,找出所有的可能性。
注意递归和回溯。
【源码】
private static HashSet<String> sets; public static void main(String[] args) { sets = new HashSet<String>(); int[] a = new int[5]; int[] b = new int[9]; for (int i = 0; i < b.length; i++) { b[i] = i + 1; } f(a, b, 0); System.out.println(sets.size()); } private static void f(int[] a, int[] b, int index) { if (index == a.length) { // 已经取出完毕 yz(a); return; } for (int i = 0; i < b.length; i++) { { if (b[i] == -1) { // 如果前面已经取走了,换一个数字来取 continue; } a[index] = b[i]; // 取数 b[i] = -1;// 置为-1,表示已经取走了 } f(a, b, index + 1); { // 回溯 b[i] = a[index]; } } } // ab*cde=adb*ce //左边(a[0] * 10 + a[1]) * (a[2] * 100 + a[3] * 10 + a[4]) //右边(a[0] * 100 + a[3] * 10 + a[1])* (a[2] * 10 + a[4]) private static void yz(int[] a) { if ((a[0] * 10 + a[1]) * (a[2] * 100 + a[3] * 10 + a[4]) == (a[0] * 100 + a[3] * 10 + a[1])* (a[2] * 10 + a[4])) { StringBuilder sb = new StringBuilder(); sb.append(a[0]); sb.append(a[1]); sb.append("*"); sb.append(a[2]); sb.append(a[3]); sb.append(a[4]); sb.append("="); sb.append(a[0]); sb.append(a[3]); sb.append(a[1]); sb.append("*"); sb.append(a[2]); sb.append(a[4]); sets.add(sb.toString()); } }
【结果】
142
相关文章推荐
- 蓝桥杯第四届预赛2马虎的算式
- 第四届蓝桥杯第二题马虎的算式
- 蓝桥杯任务之马虎的算式
- 2013年第四届蓝桥杯省赛C++B组——2、马虎的算式
- 蓝桥杯--马虎的算式
- 蓝桥杯 第四届C/C++预赛真题(2) 马虎的算式(穷举)
- 第四届蓝桥杯C++B组 马虎的算式
- 蓝桥杯-马虎的算式-java
- 2013蓝桥杯真题(二)-马虎的算式
- [JAVA][2013蓝桥杯预赛 JAVA本科B组][马虎的算式]
- 第四届蓝桥杯 省赛 JavaB组 马虎的算式
- 蓝桥杯 马虎的算式
- 2013蓝桥杯预选:马虎的算式
- 2013第四届蓝桥杯预赛试题本科c++马虎的算式
- 马虎的算式——第四届蓝桥杯选拔赛java B组
- 蓝桥杯 马虎的算式
- 2013第四届蓝桥杯C++B组第二题:马虎的算式
- 第四届蓝桥杯软件类国赛真题-C-B-2_马虎的算式
- 蓝桥杯学习笔记——马虎的算式
- 马虎的算式(蓝桥杯)