gpt4 book ai didi

c++ - 查找总和除以给定数的数组的子数组数

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:25:40 25 4
gpt4 key购买 nike

<分区>

我被一道算法题卡住了。请建议我一些有效的算法来解决以下问题。

问题是

找出其和可被给定数整除的子数组的数目。

我的作品

我做了一个算法,它的复杂度是O(N^2),在这里,N = 一个数组的大小。

我的代码

#include<stdio.h>

using namespace std;

main() {
int N;
int P;
int T;
int val;
long long int count = 0;
long long int answer = 0;
scanf("%d", &T);
//T = 20;

for(int k = 1; k <= T; k++) {
scanf("%d", &N);
scanf("%d", &P);
count = 0;
answer = 0;
for(int i = 0; i < N; i++) {
scanf("%d", &val);
count += val;
workingArray[i] = count;
}

for(int length = 1; length <= N; length++) {
for(int start = 0; start <= (N-length); start++) {
if( start == 0 ) {
if(workingArray[start+length-1]%P == 0) answer++;
}
else if( (workingArray[start+length-1] - workingArray[start-1])%P == 0) answer++;
}
}

printf("Case #%d\n%lld\n", k, answer);
}
return 0;
}

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com