您的位置:首页 > 编程语言 > Java开发

编写一个在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 趣味编程