题解都在论文里了

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define maxn 10000005
  4. #define ll long long
  5. #define mod 20101009
  6.  
  7. bool vis[maxn];
  8. int sum[maxn],prime[maxn],mm,mu[maxn];
  9. void primes(){
  10. mu[]=;
  11. for(int i=;i<maxn;i++){
  12. if(!vis[i]){
  13. prime[++mm]=i;
  14. mu[i]=-;
  15. }
  16. for(int j=;j<=mm;j++){
  17. if(i*prime[j]>=maxn)break;
  18. vis[i*prime[j]]=;
  19. if(i%prime[j]==){
  20. mu[i*prime[j]]=;
  21. break;
  22. }
  23. else mu[i*prime[j]]=-mu[i];
  24. }
  25. }
  26. for(int i=;i<maxn;i++)
  27. sum[i]=(sum[i-]+(ll)mu[i]*i%mod*i%mod)%mod;
  28. }
  29. ll n,m;
  30.  
  31. inline ll Sum(ll n,ll m){
  32. ll res1=((+n)*n/)%mod;
  33. ll res2=((+m)*m/)%mod;
  34. return res1*res2%mod;
  35. }
  36. inline ll F(ll n,ll m){
  37. ll res=;
  38. if(n>m)swap(n,m);
  39. for(int l=,r;l<=n;l=r+){
  40. r=min(n/(n/l),m/(m/l));
  41. ll tmp=((sum[r]-sum[l-])%mod+mod)%mod;
  42. res=(res+tmp*Sum(n/l,m/l)%mod)%mod;
  43. }
  44. return res;
  45. }
  46.  
  47. int main(){
  48. primes();
  49.  
  50. scanf("%lld%lld",&n,&m);
  51. if(n>m)swap(n,m);
  52. ll ans=;
  53. for(int l=,r;l<=n;l=r+){
  54. r=min(n/(n/l),m/(m/l));
  55. ll tmp=(ll)(l+r)*(r-l+)/%mod;
  56. ans=(ans+tmp*F(n/l,m/l)%mod)%mod;
  57. }
  58. cout<<ans<<endl;
  59. }

反演+分块套分块——bzoj2154的更多相关文章

  1. BZOJ.3920.Yuuna的礼物(莫队 分块套分块 分段离散化)

    题目链接 详细题解:https://www.cnblogs.com/autsky-jadek/p/4376091.html 代码参考自:https://www.cnblogs.com/Sakits/p ...

  2. bzoj3920: Yuuna的礼物(莫队+分块套分块)

    思路挺简单的,但是总感觉好难写...码力还是差劲,最后写出来也挺丑的 这题显然是个莫队题,考虑怎么转移和询问... 根据莫队修改多查询少的特点,一般用修改快查询慢的分块来维护.查第$k_1$小的出现次 ...

  3. 整除分块套杜教筛为什么是 O(n^2/3) 的

    假设我们要筛一个东西叫做 \(f\) . 记 \[D(n)=\left\{n,\left\lfloor\dfrac n2\right\rfloor,\left\lfloor\dfrac n3\righ ...

  4. 【bzoj2154】Crash的数字表格 莫比乌斯反演

    题目描述 今天的数学课上,Crash小朋友学习了最小公倍数(Least Common Multiple).对于两个正整数a和b,LCM(a, b)表示能同时被a和b整除的最小正整数.例如,LCM(6, ...

  5. 【bzoj4816】[Sdoi2017]数字表格 莫比乌斯反演

    题目描述 Doris刚刚学习了fibonacci数列.用f[i]表示数列的第i项,那么 f[0]=0 f[1]=1 f[n]=f[n-1]+f[n-2],n>=2 Doris用老师的超级计算机生 ...

  6. 洛谷P1829 [国家集训队]Crash的数字表格 / JZPTAB(莫比乌斯反演)

    题目背景 提示:原 P1829 半数集问题 已经迁移至 P1028 数的计算 题目描述 今天的数学课上,Crash小朋友学习了最小公倍数(Least Common Multiple).对于两个正整数a ...

  7. 一些gcd计数问题

    数论什么的全都忘光了吧QAQ 做了几道简单的题练习一下. bzoj1101: [POI2007]Zap 求有多少对数满足 gcd(x,y)=d, 1<=x<=a, 1<=y<= ...

  8. 题解-MtOI2019 幽灵乐团

    题面 MtOI2019 幽灵乐团 给定 \(p\),\(Cnt\) 组测试数据,每次给 \(a,b,c\),求 \[\prod_{i=1}^a\prod_{j=1}^b\prod_{k=1}^c\le ...

  9. 题解-[SDOI2017]数字表格

    题解-[SDOI2017]数字表格 前置知识: 莫比乌斯反演</> [SDOI2017]数字表格 \(T\) 组测试数据,\(f_i\) 表示 \(\texttt{Fibonacci}\) ...

随机推荐

  1. 华视身份证读卡器获取uid号vue单文件组件版本

    <template> <div id="app" ref="app"> <object ref="CertCtl&quo ...

  2. java反射技术主要实现类有哪些,作用分别是什么

    Java反射技术主要实现类有哪些,作用分别是什么? 在JDK中,主要由以下类来实现Java反射机制,这些类都位于java.lang.reflect包中 1)Class类:代表一个类 2)Field 类 ...

  3. vue-cli下的vuex的极简Demo(实现加1减1操作)

    1.vue-cli搭建好项目之后,使用npm安装vuex npm install vuex --save 2.在项目目录中构建vuex目录(这里我新建了store的文件夹,里面新建了store.js文 ...

  4. input在输入中文时所触发的事件(防止输入中文时重复执行)

    一般在监听文本框输入时监听文本内容改变事件,可以使用oninput和onchange事件,两者区别在于oninput在文本输入状态可以一直监听变化,onchange在文本框失去焦点时才会触发,所以要想 ...

  5. Dart编程实例 - 相等和关系操作符

    Dart编程实例 - 相等和关系操作符 void main() { var num1 = 5; var num2 = 9; var res = num1>num2; print('num1 gr ...

  6. rails调试

    1.debugger() 测试结果来看,在Controller中加入后,可在后台中断调试如下 通常输出 log 是输出到终端(启动 rails server 的终端): # 控制器里 logger.i ...

  7. PHP FILTER_VALIDATE_URL 过滤器

    定义和用法 FILTER_VALIDATE_URL 过滤器把值作为 URL 来验证. Name: "validate_url" ID-number: 273 可能的标志: FILT ...

  8. golang 读取 ini配置信息

      package main //BY: 29295842@qq.com//这个有一定问题   如果配置信息里有中文就不行//[Server] ;MYSQL配置//Server=localhost   ...

  9. 文件下载java代码

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletExcepti ...

  10. 回退ios版本

    https://ipsw.me/ 访问以上网址,选择自己对应的手机,选择可下载的版本数据,打开itunes,自动备份数据,然后按住alt+左键点击恢复... 成功后. 然后进行备份自己的之前备份的数据 ...