联赛模拟测试22 D. 简单计算

题目描述


分析


\(\sum_{i=0}^p[(p|qi)?0:1]=\sum_{i=0}^p[(p/gcd(p,q)|qi/gcd(p,q))?0:1]=\sum_{i=0}^p[(p/gcd(p,q)|i)?0:1]=p-p/gcd(p,q)\)

代码

#include<cstdio>
long long t,p,q,ans;
long long gcd(long long aa,long long bb){
	if(bb==0) return aa;
	return gcd(bb,aa%bb);
}
int main(){
	scanf("%lld",&t);
	while(t--){
		ans=0;
		scanf("%lld%lld",&p,&q);
		ans=(p+1)*q-p+gcd(p,q);
		printf("%lld\n",ans/2);
	}
	return 0;
}
posted @ 2020-10-25 12:09  liuchanglc  阅读(62)  评论(0编辑  收藏  举报