题面

传送门

题解

话说……就一个杜教筛……刚才那道拿过来改几行就行了……

  1. //minamoto
  2. #include<bits/stdc++.h>
  3. #define R register
  4. #define ll long long
  5. #define IT map<ll,int>::iterator
  6. #define fp(i,a,b) for(R int i=a,I=b+1;i<I;++i)
  7. #define fd(i,a,b) for(R int i=a,I=b-1;i>I;--i)
  8. #define go(u) for(int i=head[u],v=e[i].v;i;i=e[i].nx,v=e[i].v)
  9. using namespace std;
  10. const int N=5e6+5,P=1e9+7,inv2=500000004;
  11. inline int add(R int x,R int y){return x+y>=P?x+y-P:x+y;}
  12. inline int dec(R int x,R int y){return x-y<0?x-y+P:x-y;}
  13. inline int mul(R int x,R int y){return 1ll*x*y-1ll*x*y/P*P;}
  14. inline int calc(R int x){return (1ll*x*(x+1)>>1)%P;}
  15. bitset<N>vis;int p[N],phi[N],m,sqr,res;ll n;map<ll,int>mp;IT it;
  16. void init(int n){
  17. phi[1]=1;
  18. fp(i,2,n){
  19. if(!vis[i])p[++m]=i,phi[i]=i-1;
  20. for(R int j=1;j<=m&&1ll*i*p[j]<=n;++j){
  21. vis[i*p[j]]=1;
  22. if(i%p[j]==0){phi[i*p[j]]=phi[i]*p[j];break;}
  23. phi[i*p[j]]=phi[i]*(p[j]-1);
  24. }
  25. }
  26. fp(i,2,n)phi[i]=add(phi[i],phi[i-1]);
  27. }
  28. int Phi(ll n){
  29. if(n<=sqr)return phi[n];
  30. it=mp.find(n);
  31. if(it!=mp.end())return it->second;
  32. int res=calc(n%P);
  33. for(R ll i=2,j;i<=n;i=j+1)
  34. j=n/(n/i),res=dec(res,mul((j-i+1)%P,Phi(n/i)));
  35. return mp[n]=res;
  36. }
  37. int main(){
  38. // freopen("testdata.in","r",stdin);
  39. scanf("%lld",&n),init(sqr=N-5);
  40. printf("%d\n",Phi(n));
  41. return 0;
  42. }

[51nod1239] 欧拉函数之和(杜教筛)的更多相关文章

  1. 51 NOD 1239 欧拉函数之和(杜教筛)

    1239 欧拉函数之和 基准时间限制:3 秒 空间限制:131072 KB 分值: 320 难度:7级算法题 收藏 关注 对正整数n,欧拉函数是小于或等于n的数中与n互质的数的数目.此函数以其首名研究 ...

  2. 【51nod】1239 欧拉函数之和 杜教筛

    [题意]给定n,求Σφ(i),n<=10^10. [算法]杜教筛 [题解] 定义$s(n)=\sum_{i=1}^{n}\varphi(i)$ 杜教筛$\sum_{i=1}^{n}(\varph ...

  3. 51nod1244 欧拉函数之和 杜教筛

    和上一题差不多,一个是μ*I=e,一个是φ*I=Id 稍改就得到了这题的代码 (我会告诉你我一开始逆元算错了吗) #include <bits/stdc++.h> #define MAX ...

  4. [51Nod 1244] - 莫比乌斯函数之和 & [51Nod 1239] - 欧拉函数之和 (杜教筛板题)

    [51Nod 1244] - 莫比乌斯函数之和 求∑i=1Nμ(i)\sum_{i=1}^Nμ(i)∑i=1N​μ(i) 开推 ∑d∣nμ(d)=[n==1]\sum_{d|n}\mu(d)=[n== ...

  5. BZOJ4805: 欧拉函数求和(杜教筛)

    4805: 欧拉函数求和 Time Limit: 15 Sec  Memory Limit: 256 MBSubmit: 614  Solved: 342[Submit][Status][Discus ...

  6. 【bzoj3944/bzoj4805】Sum/欧拉函数求和 杜教筛

    bzoj3944 题目描述 输入 一共T+1行 第1行为数据组数T(T<=10) 第2~T+1行每行一个非负整数N,代表一组询问 输出 一共T行,每行两个用空格分隔的数ans1,ans2 样例输 ...

  7. LOJ6686 Stupid GCD(数论,欧拉函数,杜教筛)

    做题重心转移到 LOJ 了. 至于为什么,如果你知道“……”的密码,就去看吧. LOJ 上用户自创题大多数都不可做,今天看到个可做题(而且还是个水题),就来做了一发. 明显枚举立方根.(以下令 $m= ...

  8. BZOJ 4805: 欧拉函数求和 杜教筛

    https://www.lydsy.com/JudgeOnline/problem.php?id=4805 给出一个数字N,求sigma(phi(i)),1<=i<=N https://b ...

  9. 【BZOJ3944/4805】Sum/欧拉函数求和 杜教筛

    [BZOJ3944]Sum Description Input 一共T+1行 第1行为数据组数T(T<=10) 第2~T+1行每行一个非负整数N,代表一组询问 Output 一共T行,每行两个用 ...

  10. 51nod1239 欧拉函数之和

    跟1244差不多. //由于(x+1)没有先mod一下一直WA三个点我... //由于(x+1)没有先mod一下一直WA三个点我... #include<cstdio> #include& ...

随机推荐

  1. Angular常犯的错误

    ng-app="name名称" name名称  == 一定要写对 其次 angular.min导入一定要正确,一定要导入正确的angular.min的库 再次js中要写自调用 (f ...

  2. python正则以及collections模块

    正则 一.认识模块  什么是模块:一个模块就是一个包含了python定义和声明的文件,文件名就是加上.py的后缀,但其实import加载的模块分为四个通用类别 : 1.使用python编写的代码(.p ...

  3. 11-02SQLserver基础--字符串函数

    数据库の函数 一.内置函数--字符串函数 1.--ASCII 返回字符串的首字母的ASCII编码 select ASCII('ame') select ASCII(xingming)from xues ...

  4. NSOperation/NSOperationQueue详细使用介绍

      一.简介 (1)是使用GCD实现的一套Objective-C的API (2)是面向对象的线程技术 (3)提供了一些在GCD中不容易实现的特性,如:限制最大并发数量.操作之间的依赖关系   NSOp ...

  5. DAY19-Django之form组件补充

    问题1:注册页面输入为空,报错:keyError:找不到password def clean(self): print("---" ,self.cleaned_data) # if ...

  6. group()、start()、end()、span()

  7. js 中的apply

    之一------(函数的劫持与对象的复制)关于对象的继承,一般的做法是用复制法: Object.extend 见protpotype.js 的实现方法: Object.extend = functio ...

  8. 第5章 选举模式和ZooKeeper的集群安装 5-1 集群的一些基本概念

    xx就是我们的master,也就是我们的主节点.心跳机制,当有一个节点挂掉之后,整个集群还是可以工作的.选举模式,我们现在的master是正常运行的,但是在某些情况下它宕机了死机了,那么这个时候它这个 ...

  9. 无人驾驶——4.控制之MPC模型预测控制

    源自:<无人驾驶无人驾驶车辆模型预测控制>——龚建伟 参考:https://wenku.baidu.com/view/8e4633d519e8b8f67c1cb9fa.html 0.车辆模 ...

  10. centos 安装 python flask 和python3安装flask

    pip install Flask python3安装 pip3 install flask