求子集元素之和(洛谷P2415题题解,Java语言描述)
程序员文章站
2022-07-16 10:51:44
...
题目要求
分析
这题我觉得……当个数学题做就好了嘛。
- 有一个数N的情况:result = 1 * N
- 有两个数N1、N2的情况:result = 2 * (N1+N2)
- 有三个数N1、N2、N3的情况:result = 4 * (N1+N2+N3)
- ……
其实不难推的,比如说三个数的情况:
N1, N2, N3, N1N2, N1N3, N2N3, N1N2N3
……
找规律嘛……
定义一下sum = sum(N1, N2, …, Nn)
其实结果就是result = sum * 2n-1
于是只需算一下数就好啦!
说明:java.math.BigInteger里有一个静态属性是TWO,可直接用,但洛谷不识别,所以我就改成new BigInteger(“2”)了。
AC代码(Java语言描述)
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String[] array = scanner.nextLine().trim().split("\\s+");
long sum = 0;
for (String s : array) {
sum += Long.parseLong(s);
}
System.out.println(new BigInteger("2").pow(array.length-1).multiply(new BigInteger(Long.toString(sum))));
scanner.close();
}
}
推荐阅读
-
动态规划求解"疯狂的采药"问题(洛谷P1616题题解,Java语言描述)
-
用贪心策略均分纸牌(洛谷P1031题题解,Java语言描述)
-
最大公约数和最小公倍数问题(洛谷P1029题题解,Java语言描述)
-
加括号改变连除式结果(洛谷P2651题题解,Java语言描述)
-
去重的Set解不出“斯诺登的密码”(洛谷P1603题题解,Java语言描述)
-
求子集元素之和(洛谷P2415题题解,Java语言描述)
-
数列分段(洛谷P1181题题解,Java语言描述)
-
在小范围内[打表]验证哥德巴赫猜想(洛谷P1579题题解,Java语言描述)
-
长方体工艺品の切割(洛谷P5729题题解,Java语言描述)
-
大肆宣传~打表判断回文质数(洛谷P1217题题解,Java语言描述)