链接P3601 签到题

  • 求$$\sum_{i=l}^{r} i-\phi_i$$
  • \(l,r\leq 10^{12},\ r-l\leq 10^6\)
  • 杜教筛似乎做不了。
  • 然后再看\(l\),\(r\)的差很小,所以可以考虑枚举然后求和。
  • 先筛出\(10^6\)中所有的质数,那么对于区间内每一个数,最多只会存在一个大于\(10^6\)的质数。
  • 所以枚举每一个质数,算出这一个质数对区间内的\(\phi\)所贡献,最后再特判一下大于\(10^6\)即可。
  • 复杂度为\(O(\sqrt r*logr+(r-l)*logr)\)。
  1. #include<bits/stdc++.h>
  2. #define R register int
  3. #define ll long long
  4. using namespace std;
  5. const int mod=666623333;
  6. const int N=1600001;
  7. ll l,r,A[N],B[N];
  8. int n,ans,tot,Mark[N],prm[N];
  9. int main(){
  10. cin>>l>>r,n=sqrt(r);
  11. for(R i=2;i<=n;++i){
  12. if(!Mark[i])prm[++tot]=i;
  13. for(R j=1;j<=tot&&prm[j]*i<=n;++j){
  14. Mark[i*prm[j]]=1;
  15. if(i%prm[j]==0)break;
  16. }
  17. }
  18. for(R i=0;i<=r-l;++i)A[i]=B[i]=i+l;
  19. for(R j=1;j<=tot&&1ll*prm[j]*prm[j]<=r;++j){
  20. ll le=prm[j]*(l/prm[j]),ri=prm[j]*(r/prm[j]);
  21. for(ll i=le;i<=ri;i+=prm[j])
  22. if(i>=l){
  23. R pos=i-l;
  24. B[pos]=B[pos]/prm[j]*(prm[j]-1);
  25. while(A[pos]%prm[j]==0)A[pos]/=prm[j];
  26. }
  27. }
  28. for(R i=0;i<=r-l;++i){
  29. if(A[i]>1)B[i]=B[i]/A[i]*(A[i]-1);
  30. ans=(ans+(l+i-B[i])%mod)%mod;
  31. }
  32. cout<<ans<<endl;
  33. return 0;
  34. }

luogu P3601 签到题的更多相关文章

  1. A 洛谷 P3601 签到题 [欧拉函数 质因子分解]

    题目背景 这是一道签到题! 建议做题之前仔细阅读数据范围! 题目描述 我们定义一个函数:qiandao(x)为小于等于x的数中与x不互质的数的个数. 这题作为签到题,给出l和r,要求求. 输入输出格式 ...

  2. 洛谷P3601签到题(欧拉函数)

    题目背景 这是一道签到题! 建议做题之前仔细阅读数据范围! 题目描述 我们定义一个函数:qiandao(x)为小于等于x的数中与x不互质的数的个数. 这题作为签到题,给出l和r,要求求. 输入输出格式 ...

  3. 洛谷 P3601 签到题

    https://www.luogu.org/problemnew/show/P3601 一道关于欧拉函数的题. 读完题目以后我们知道所谓的$aindao(x)=x- \phi (x) $. 对于x小的 ...

  4. 洛谷P3601 签到题

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...

  5. [Luogu 3794]签到题IV

    Description 题库链接 给定长度为 \(n\) 的序列 \(A\).求有多少子段 \([l,r]\) 满足 \[ \left(\gcd_{l\leq i\leq r}A_i\right) \ ...

  6. P3601 签到题

    思路 注意到求的qiandao(x)就是\(x-\phi(x)\) 但是\(l,r\le 10^{12}\),所以不能直接杜教筛 但是\(r-l\le 10^{6}\),所以可以先筛出1e6(\(\s ...

  7. 【数论】[素数筛,phi]P3601签到题

    题目描述 给出l,r,要求求出\(\sum_{i = l}^r (i - phi[i]) mod 666623333\) \(1\leq l\leq r\leq 10^{12}\),\(r - l \ ...

  8. [luogu3601]签到题

    [luogu3601]签到题 luogu 求\[\sum_{i=l}^ri-\phi(i)\] 一个朴素的想法是枚举l~r,根号求\(\phi\),显然这样是\((r-l)\sqrt r\),时间无法 ...

  9. fjwc2019 D3T1 签到题 (贪心)

    #184. 「2019冬令营提高组」签到题 每次询问接近O(1).......考虑贪心 怎么贪心呢? 对于相邻的两个数,我们要保证异或x后单调不降 我们找到两个数二进制上最高的相异位 当左边的数相异位 ...

随机推荐

  1. 一、基础篇--1.1Java基础-包装类的装箱和拆箱

    包装类:java是典型的面向对象编程,但是八种基本数据类型并不支持面向对象编程.基本类型的数据不具备对象的特性,没有属性和方法.沿用它们只是为了迎合人类根深蒂固的习惯,并的确能简单.有效地进行常规数据 ...

  2. 什么是webpack以及为什么使用它

    什么是webpack以及为什么使用它 新建 模板 小书匠  在ES6之前,我们要想进行模块化开发,就必须借助于其他的工具.因为开发时用的是高级语法开发,效率非常高,但很可惜的是,浏览器未必会支持或认识 ...

  3. CAN诊断学习

    汽车CAN总线有动力总成PCAN,底盘控制CCAN,整车控制BCAN,娱乐ECAN,诊断DCAN五种. CAN诊断,即是对CAN网络中各节点,各CAN总线,网关的故障进行检查与修复. 统一诊断服务(U ...

  4. 【c++进阶:c++ algorithm的常用函数】

    c++ algorithm的常用函数 https://blog.csdn.net/hy971216/article/details/80056933 reverse() reverse(it,it2) ...

  5. 服务器控件调用JS函数

    是服务器端控件,不能在JS里直接调用,但可以在aspx.cs 里写方法可以调用JS函数,比如JS方法名称是check(), function check() {   alert(document.ge ...

  6. JS中数组的拷贝方法

    之前在写一个vue的计算属性时,大概是这样: computed: { updateList () { let newList = this.List /*do something*/ return n ...

  7. golang 导出CSV文件中文乱码的问题

    golang  导出CSV文件中文乱码的问题 解决办法: 在csv文件的开头写入 UTF-8 BOM // 创建文件 dstf, err := os.Create("./data/" ...

  8. RequestContextHolder

    JShop简介:jshop是一套使用Java语言开发的B2C网店系统,致力于为个人和中小企业提供免费.好用的网店系统. 项目主页:http://git.oschina.net/dinguangx/js ...

  9. .net 部署到服务端IIS,Process调用exe程序无法运行问题解决

    场景: 开发某一功能将html内容转换为pdf,采用第三方插件wkhtmltopdf.exe进行转换.在本地调试正常运行,部署到服务端后文件没有正常生成. IIS中,Process打不开cmd程序,程 ...

  10. FLUME安装&环境(一):netcat类型配置

    1.下载软件 在 /opt/deploy 下新建 flume 文件夹: # mkdir / opt/deploy / flume 到Flume官网上http://flume.apache.org/do ...