数字游戏
解题思路
这题不知道为什么给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卷答案
