【题目背景】"好啊!一言为定!!",作为蒟蒻的 GJY 竟然约定和神犇来一场世纪大战。\n【题目描述】\nGJY 在期末的时候跟神犇约定了一次战争,这对于 GJY 来说可是一件具有挑\n战性并十分困难的事情。所有 GJY 从现在开始就要努力学习,认真学习。GJY 为\n了赢过神犇可以不惜一切代价,就算是让她废寝忘食也是可以的。"不吃饭,不\n睡觉,不吃零食多思考"是她的宣战格言。给定一个 GJY 开始奋斗的时间,精确\n【题目描述】\n小 h 和小 n 在给小朋友们排队,有 n(1<n≤100)个小朋友,序号为 1 到 n,\n每个小朋友自身带着一个号码,他们排成一列,但号码不一定是有序的,现在小\nn 问小 h,如果从队列中随机抽取 m(1≤m<n)个小朋友出列,求剩下小朋友中\n相邻两个小朋友号码乘积的总和。\n【输入格式】\n第一行一个整数 n。\n第二行 n 个整数 ai(1≤ai≤100),分别表示第 1 到 i 个小朋友的号码。\n第三行一个整数 m。\n2\n第四行 m 个整数,表示出列的小朋友的序号(原本的序号,也就是说之前的\n出列对每个小朋友的序号没有影响)。\n【输出格式】\n一行一个整数表示相邻两个小朋友号码乘积的总和。\n【输入样例】\n10\n14 87 28 29 49 27 84 10 65 43\n7\n1 3 5 7 8 9 10\n【输出样例】\n3306\ncpp code内容:cpp\n#include <iostream>\n#include <vector>\nusing namespace std;\n\nint main() {\n int n;\n cin >> n;\n\n vector<int> nums(n);\n for (int i = 0; i < n; i++) {\n cin >> nums[i];\n }\n\n int m;\n cin >> m;\n\n vector<int> removed(m);\n for (int i = 0; i < m; i++) {\n cin >> removed[i];\n }\n\n long long sum = 0;\n for (int i = 0; i < n; i++) {\n bool isRemoved = false;\n for (int j = 0; j < m; j++) {\n if (i + 1 == removed[j]) {\n isRemoved = true;\n break;\n }\n }\n if (!isRemoved) {\n if (i > 0) {\n sum += nums[i] * nums[i - 1];\n }\n if (i < n - 1) {\n sum += nums[i] * nums[i + 1];\n }\n }\n }\n\n cout << sum << endl;\n\n return 0;\n}\n

C++ 编程:计算剩余小朋友号码乘积之和 - 详细解析与代码示例

原文地址: https://www.cveoy.top/t/topic/qcyH 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录