数字游戏
解题思路
这题不知道为什么给200分,其实很简单。解题思路就是循环求和即可。
代码
int CalcStartIndex(int targetNum, int count, std::vector<int>& nums) { int startIndex = 0; while (startIndex < nums.size()) { for (int i = startIndex+1; i < nums.size(); i++) { int sum = std::accumulate(std::next(nums.begin(), startIndex), std::next(nums.begin(), i), 0); if (sum % targetNum == 0) { return 1; } } startIndex++; } if (startIndex == nums.size()) return 0; return 0; } void main() { int targetNum = 0; int count = 0; //用例会保证数据范围正确,这里不用做超限制 while (std::cin >> count && std::cin >> targetNum) { std::vector<int> nums; for (int i = 0; i < count; i++) { int n; std::cin >> n; nums.push_back(n); } int result = CalcStartIndex(targetNum, count, nums); std::cout << result << std::endl; //预期结果为0 } }
结果验证
案例给太easy,自己测试一个复杂case,结果为
华为OD2024 E 文章被收录于专栏
实时更新华为2024 E卷答案