AtCoder Beginner Contest 156 F Modularness 容斥原理+前缀和+模后数据比大小特点

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;
}
发布了560 篇原创文章 · 获赞 536 · 访问量 45万+

猜你喜欢

转载自blog.csdn.net/mrcrack/article/details/104534928