编写一个在1,2,…,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是100的程序
2015-12-27 21:40
726 查看
摘要: 编写一个在1,2,…,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是100的程序,并输出所有的可能性。例如:1 + 2 + 34 – 5 + 67 – 8 + 9 = 100。java实现。
以下是运行结果:
public class Get100Demo { public static void main(String[] args) { int[] nums = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; int total = power(3, nums.length - 1); for (int o = 0; o < total; o++) { StringBuffer buffer = new StringBuffer(); buffer.append(nums[0]); int result = 0; int temp = nums[0]; for (int i = 1; i < nums.length; i++) { int bit = getBitNum(i, o); if (bit == 0) { buffer.append(" + "); result += temp; temp = nums[i]; } else if (bit == 1) { buffer.append(" - "); result += temp; temp = -nums[i]; } else { if (temp > 0) temp = 10 * temp + nums[i]; else temp = 10 * temp - nums[i]; } buffer.append(nums[i]); } result += temp; buffer.append(" = "); buffer.append(result); if (result == 100) System.out.println(buffer); } } public static int getBitNum(int index, int number) { return (number / power(3, index - 1)) % 3; } public static int power(int number, int index) { return index > 0 ? number * power(number, index - 1) : 1; } }
以下是运行结果:
1 + 23 - 4 + 56 + 7 + 8 + 9 = 100 12 + 3 - 4 + 5 + 67 + 8 + 9 = 100 1 + 2 + 34 - 5 + 67 - 8 + 9 = 100 1 + 2 + 3 - 4 + 5 + 6 + 78 + 9 = 100 123 - 4 - 5 - 6 - 7 + 8 - 9 = 100 123 + 45 - 67 + 8 - 9 = 100 1 + 23 - 4 + 5 + 6 + 78 - 9 = 100 12 - 3 - 4 + 5 - 6 + 7 + 89 = 100 12 + 3 + 4 + 5 - 6 - 7 + 89 = 100 123 - 45 - 67 + 89 = 100 123 + 4 - 5 + 67 - 89 = 100
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树