双胞胎分零食:算法题解与代码实现
双胞胎分零食:算法题解与代码实现/n/n小龙在柜子里面藏了 n 种不同的零食,每一种零食有 $b[i]$ 个,小龙的双胞胎弟弟小虎发现了小龙的零食,要求小龙平分。小龙想知道自己还需要买多少零食,才能把这些零食分成一模一样的两份。/n/n### 题目描述/n/n输入格式/n/n第一行为一个整数 n,$(n/leq 10^5)$,表示零食的种类数。/n/n第二行为 n 个整数,表示每一种零食的个数,每个整数之间用一个空格隔开。/n/n输出格式/n/n输出一个整数,表示小龙还需要买的零食的个数。/n/n### 样例 #1/n/n样例输入 #1/n/n/n1/n3/n/n/n样例输出 #1/n/n/n1/n/n/n### 提示/n/n保证所有的输入都在 int 范围内。/n/n### Python3 代码/n/npython/nn = int(input())/nsnacks = list(map(int, input().split()))/n/ntotal = sum(snacks)/nif total % 2 == 1:/n print(-1)/nelse:/n target = total // 2/n count = 0/n for snack in snacks:/n if snack > target:/n print(-1)/n break/n elif snack == target:/n count += 1/n else:/n count += 2/n else:/n print((count - n) // 2)/n/n/n### C++ 代码/n/ncpp/n#include <iostream>/n#include <vector>/nusing namespace std;/n/nint main() {/n int n;/n cin >> n;/n vector<int> snacks(n);/n int total = 0;/n for (int i = 0; i < n; i++) {/n cin >> snacks[i];/n total += snacks[i];/n }/n if (total % 2 == 1) {/n cout << -1 << endl;/n } else {/n int target = total / 2;/n int count = 0;/n for (int i = 0; i < n; i++) {/n if (snacks[i] > target) {/n cout << -1 << endl;/n return 0;/n } else if (snacks[i] == target) {/n count++;/n } else {/n count += 2;/n }/n }/n cout << (count - n) / 2 << endl;/n }/n return 0;/n}/n
原文地址: https://www.cveoy.top/t/topic/n327 著作权归作者所有。请勿转载和采集!