联赛模拟测试22 D. 简单计算
发布日期:2021-05-09 04:44:29 浏览次数:10 分类:博客文章

本文共 388 字,大约阅读时间需要 1 分钟。

题目描述

分析

\(\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
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;}
上一篇:联赛模拟测试24 B. 答题 折半枚举
下一篇:联赛模拟测试22 B. 分组配对 倍增+二分

发表评论

最新留言

表示我来过!
[***.240.166.169]2025年03月24日 13时35分49秒