#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll t;
ll n;
ll q,s,de,k;
ll sq;
ll a[114514];
ll d[114514][340];
ll d2[114514][340];
int main() {
scanf("%lld",&t);
while(t--) {
scanf("%lld%lld",&n,&q);
sq=sqrt(n);
for(int i=1; i<=n; i++)scanf("%lld",&a[i]);
for(int j=1; j<=339; j++) {
for(int i=n+sq; i>=1; i--) {
d[i][j]=d2[i][j]=0;
}
}
for(int j=1; j<=sq; j++) {
for(int i=n; i>=1; i--) {
d[i][j]=d[i+j][j]+a[i];
}
}
for(int j=1; j<=sq; j++) {
for(int i=n; i>=1; i--) {
d2[i][j]=d2[i+j][j]+d[i][j];
}
}
while(q--) {
scanf("%lld%lld%lld",&s,&de,&k);
if(de<=sq) {
printf("%lld ",d2[s][de]-d2[s+de*k][de]-k*d[s+de*k][de]);
} else {
ll ans=0;
for(int i=1; i<=k; i++) {
ans+=a[s+(i-1)*de]*i;
}
printf("%lld ",ans);
}
}
printf("\n");
}
return 0;
}
上面的循环将 i 和 j 交换就AC了,但想知道为什么