酷代码 AI
菜单
服务商

给定长度为 n 的序列 a1,a2,⋯,an 。 你需要回答多次询问,每次询问会给出一个数字 k ,请问序列中所有数字或 k 之和减去所有数字与 k 之和是多少,即求 ∑ni=1ai|k−∑ni=1ai&k 。 输入格式 第一行输入一个整数 n 。 第二行输入 n 个整数 a1,a2,⋯,an 。 第三行输入一个整数 q ,表示询问次数。 接下来 q 行,每行输入一个整数 k 。 输出格式 对于每次询问,输出一行一个整数,表示答案。 样例输入 5 1 2 3 4 5 5 1 2 3 4 5 样例输出 14 17 16 19 18 数据范围 对于 30% 的数据,保证 n,q≤1000 。 对于 100% 的数据,保证 1≤n,q≤5×105,1≤ai,k≤109 。 用C++xie

```cpp #include <iostream> using namespace std; int main() { int n; cin >> n; long long a[n]; for (int i = 0; i < n; i++) { cin >> a[i]; } int q; cin >> q; while (q--) { long long k; cin >> k; long long sum_or = 0, sum_and = 0; for (int i = 0; i < n; i++) { sum_or += a[i] | k; sum_and += a[i] & k; } cout << sum_or - sum_and << endl; } return 0; } ``` 额外注意的逻辑点: 1. 注意输入数据的范围,防止溢出。 2. 考虑使用更高效的数据结构,如 `vector` 替代数组。 3. 对于频繁的输入输出操作,注意优化输入输出的效率。 [2025-01-08 19:10:29 | AI写代码神器 | 232点数解答]

相关提问
请收藏新域名:pdcd.cn
发财导航,免费问AI
实用工具查看更多
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]
数独游戏 [娱乐类]
经典推箱子 [娱乐类]
AI摸鱼五子棋 [娱乐类]