Run ID 作者 问题 语言 测评结果 Time Memory 代码长度 提交时间
136248 彭士宝 求和比较 Java Wrong Answer 0 MS 312 KB 1405 2025-11-09 22:38:12

Tests(0/4):


Code:

import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while (scanner.hasNextInt()) { int N = scanner.nextInt(); int M = scanner.nextInt(); // 计算从1到N的总和 int total = N * (N + 1) / 2; // 如果 total + M 不是偶数,直接输出0 if ((total + M) % 2 != 0) { System.out.println(0); continue; } // 目标和 int sum1 = (total + M) / 2; // 动态规划数组 boolean[] dp = new boolean[sum1 + 1]; dp[0] = true; // 遍历从1到N的每个数 for (int i = 1; i <= N; ++i) { // 从后往前更新dp数组 for (int j = sum1; j >= i; --j) { dp[j] = dp[j] || dp[j - i]; } } // 计数满足条件的拆分方案 int count = 0; for (int i = 0; i <= sum1; ++i) { if (dp[i] && dp[sum1 - i]) { count++; } } // 输出结果 System.out.println(count / 2); // 每种拆分方案被计算了两次,需要除以2 } scanner.close(); } }


Run Info:

------Input------
10 10
------Answer-----
0
------Your output-----