题意 求以下式子的值,T组数据各个字母满足1 ≤ n , a , b ≤109 ,a,b互质

思路:

卡常毒瘤题,出题人时限卡的非常紧,考场上推出来又T又WA

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 typedef long long ll;
 4 const int maxn=1e6+10,mod=1e9+7;
 5 const int inv2=500000004,inv3=333333336;
 6 int phi[maxn],n,ans;
 7
 8 vector<int> p;bool np[maxn];
 9 map<int,int> Phi;
10
11 void init(){
12     phi[1]=1;
13     for(int i=2;i<maxn;++i){
14         if(!np[i]){
15             p.push_back(i);
16             phi[i]=i-1;
17         }
18         for(int j=0;j<p.size()&&p[j]*i<maxn;++j){
19             np[i*p[j]]=true;
20             if(i%p[j]==0){
21                 phi[i*p[j]]=phi[i]*p[j];
22                 break;
23             }
24             phi[i*p[j]]=phi[i]*(p[j]-1);
25         }
26     }
27     for(int i=1;i<maxn;++i)
28         phi[i]=(1ll*phi[i]*i%mod+phi[i-1])%mod;
29 }
30 int read(){
31     int x=0;char c=getchar();
32     for(;!isdigit(c);c=getchar());
33     for(;isdigit(c);c=getchar())x=(x<<3)+(x<<1)+(c^48);
34     return x;
35 }
36 void Write(int x){
37     if(x<=0)return;
38     Write(x/10);putchar(x%10+'0');
39 }
40 void write(int x){
41     if(x==0)putchar('0');
42     else Write(x);
43 }
44 int Sum2(int n){
45     int ret=n;
46     ret=(ll)ret*inv2%mod;
47     ret=(ll)ret*(n+1)%mod;
48     return ret;
49 }
50 int Sum3(int n){
51     int ret=Sum2(n),tmp=(2ll*n+1)%mod;
52     ret=(ll)ret*inv3%mod;
53     ret=(ll)ret*tmp%mod;
54     return ret;
55 }
56 int phii(int n){
57     if(n<maxn)return phi[n];
58     if(Phi.count(n))return Phi[n];
59     int ret=Sum3(n);
60     for(int i=2,r,tmp;i<=n;i=r+1){
61         r=min(n,n/(n/i));
62         tmp=(ll)phii(n/i)*(Sum2(r)-Sum2(i-1))%mod;
63         ret-=tmp;
64         if(ret<0)ret+=mod;
65         if(ret>=mod)ret-=mod;
66     }
67     return Phi[n]=ret;
68 }
69 void solve(){
70     n=read();read();read();
71     Phi.clear();
72     ans=(phii(n)-1+mod)%mod;
73     ans=(ll)inv2*ans%mod;
74     write(ans);puts("");
75 }
76 int main(){
77     init();
78     int T;scanf("%d",&T);
79     for(;T--;)solve();
80     return 0;
81 }

转载于:https://www.cnblogs.com/ndqzhang1111/p/11402780.html

HDU 6706 huntian oy相关推荐

  1. HDU 6706 huntian oy (欧拉函数 + 杜教筛)

    huntian oy 推式子 ∑i=1n∑j=1igcd(ia−ja,ib−jb)(gcd(i,j)==1)=∑i=1n∑j=1i(i−j)(gcd(i,j)==1)=∑i=1ni∑j=1i(gcd( ...

  2. hdu 6706 huntian oy 杜教筛

    传送门 思路: 打表发现 题意可转换成  (a,b互质) 求  与他互质的和为,因为i对应n−i 杜教筛看这里

  3. 2019年CCPC - 网络赛E:huntian oy【杜教筛】

    题目: HDU---6706:huntian oy 题意: 给定N,a,b,求下面式子的值(求和后再mod 1e9+7): 分析: 一直怯于杜教筛不敢去学习[一看就会的杜教筛],今天终于迈出了这一步, ...

  4. huntian oy (数论卷积杜教筛)

    huntian oy (数论&卷积&杜教筛) 思路: f(n,a,b)=∑i=1n∑j=1igcd(ia−ja,ib−jb)[gcd(i,j)=1](mod109+7)f(n,a,b) ...

  5. 2019CCPC网络预选赛 八道签到题题解

    目录 2019中国大学生程序设计竞赛(CCPC) - 网络选拔赛 6702 & 6703 array 6704 K-th occurrence 6705 path 6706 huntian o ...

  6. 知识点 - 数论函数导论

    知识点 - 数论进阶 abstract:整除分块,积性函数,线性筛,莫比乌斯反演,迪利克雷卷积,积性函数前缀和,杜教筛,阁洲筛,min_25筛 0.引入 Gym - 101485D debugging ...

  7. 2019CCPC网络赛部分题解

    这场锅最大的应该是我吧...一个半小时的时候我已经写完了08的正解,然而突发奇想也没造数据就把自己叉了,然后带着学弟想了俩小时这道傻逼题... 三道签到题我都没看题,学弟一个人写的:wtw不在学校,抽 ...

  8. element-ui 网格_UI备忘单:列表与网格

    element-ui 网格 重点 (Top highlight) Grids or lists? That is the question we will look at in this cheat ...

  9. figma下载_在Figma中将约束与布局网格一起使用

    figma下载 While doing research for the book "Designing in Figma", I discovered a powerful wa ...

最新文章

  1. WCF学习之旅—WCF第二个示例(七)
  2. cwntos新建目录挂载磁盘_centos挂载磁盘及扩展根目录
  3. case when用法java_Oracle CASE WHEN 用法介绍
  4. 利用rsync如何同步单个文件
  5. 计算机管理员无法创建密码,找到电脑管理员的密码
  6. Java文档阅读笔记-C3P0连接池的使用
  7. WebApi接口访问异常问题。尝试创建“testController”类型的控制器时出错。请确保控制器具有无参数公共构造函数
  8. Python io – BytesIO,StringIO
  9. 【洛谷3368】树状数组模版题(区间修改,单点查询)
  10. Instant Run(App加壳)
  11. 817c语言程序设计,全国名校C语言程序设计考研真题汇编
  12. 使用iToolab UnlockGo 删除iPhone/iPad上的各种锁
  13. 使用itext和freemarker来根据Html模板生成PDF文件,加水印、印章
  14. 【ROM制作工具】如何三分钟学会制作手机线刷包?一键制作线刷包详细教程
  15. 什么是反射 反射怎么用
  16. java去除word修改痕迹_去除Word修订
  17. Python图像库PIL的类Image的paste写法
  18. 「手把手教你」用Python量化海龟交易法则
  19. 《拳皇15》先导预告 多位角色回归、细节下月公开
  20. Spinner ArrayAdapter

热门文章

  1. 设计模式(六)J2EE 模式
  2. 【机器学习】 - 使用dlib进行人脸定位,人脸检测,给人脸图片戴口罩
  3. 【数据库实验课堂】实验三:管理SQL Server表数据
  4. 【HDU - 3746 】Cyclic Nacklace (KMP,最小循环节问题)
  5. 【POJ - 2752】Seek the Name, Seek the Fame (KMP,公共前缀后缀长度及个数)
  6. linux虚拟机上安装域名,虚拟机如何安装linux系统
  7. html 如何改变图片形状,图形变换的三种方式是什么?
  8. mysql分区表达式_怎么定义 mysql hash分区使用的用 户定义的表达式
  9. idea springboot一直卡在启动 没有日志输出
  10. java递归遍历删除文件