AtCoder Beginner Contest 156 比赛人数7003
AtCoder Beginner Contest 156 F Modularness 容斥原理+前缀和+模后数据比大小特点
总目录详见https://blog.csdn.net/mrcrack/article/details/104454762
在线测评地址https://atcoder.jp/contests/abc156/tasks/abc156_f
思路同https://www.cnblogs.com/zdragon1104/p/12353934.html
/*
k=3 n=6
a0=x,a1=x+d0,a2=x+d0+d1,a3=x+d0+d1+d2
a4=x+d0+d1+d2+d0,a5=x+d0+d1+d2+d0+d1
a5/m-a0/m
*/
#include <stdio.h>
#define maxn 5010
#define LL long long
int d[maxn],a[maxn],zero[maxn];
LL sum[maxn];
int main(){
int k,q,n,x,m,i,ans,t,z;
scanf("%d%d",&k,&q);
for(i=0;i<k;i++)scanf("%d",&d[i]);
while(q--){
scanf("%d%d%d",&n,&x,&m);
x%=m,sum[0]=0,zero[0]=0;
for(i=0;i<k;i++){
a[i]=d[i]%m;
sum[i+1]=sum[i]+a[i];
zero[i+1]=zero[i]+(a[i]==0);
}
z=(n-1)/k*zero[k]+zero[(n-1)%k];
t=((n-1)/k*sum[k]+sum[(n-1)%k]+x)/m-x/m;
ans=(n-1)-z-t;
printf("%d\n",ans);
}
return 0;
}