[国家集训队]Crash的数字表格 / JZPTAB

题目描述

今天的数学课上,Crash 小朋友学习了最小公倍数(Least Common Multiple)。对于两个正整数 a a a 和 b b b, lcm ( a , b ) \text{lcm}(a,b) lcm(a,b) 表示能同时整除 a a a 和 b b b 的最小正整数。例如, lcm ( 6 , 8 ) = 24 \text{lcm}(6, 8) = 24 lcm(6,8)=24。

回到家后,Crash 还在想着课上学的东西,为了研究最小公倍数,他画了一张 $ n \times m$ 的表格。每个格子里写了一个数字,其中第 i i i 行第 j j j 列的那个格子里写着数为 lcm ( i , j ) \text{lcm}(i, j) lcm(i,j)。

看着这个表格,Crash 想到了很多可以思考的问题。不过他最想解决的问题却是一个十分简单的问题:这个表格中所有数的和是多少。当 n n n 和 m m m 很大时,Crash 就束手无策了,因此他找到了聪明的你用程序帮他解决这个问题。由于最终结果可能会很大,Crash 只想知道表格里所有数的和 m o d 20101009 \bmod 20101009 mod20101009 的值。

输入格式

输入包含一行两个整数,分别表示 n n n 和 m m m。

输出格式

输出一个正整数,表示表格中所有数的和 m o d 20101009 \bmod 20101009 mod20101009的值。

样例 #1

样例输入 #1

4 5

样例输出 #1

122

提示

样例输入输出 1 解释

该表格为:

1 1 1 2 2 2 3 3 3 4 4 4 5 5 5
2 2 2 2 2 2 6 6 6 4 4 4 10 10 10
3 3 3 6 6 6 3 3 3 12 12 12 15 15 15
4 4 4 4 4 4 12 12 12 4 4 4 20 20 20

数据规模与约定

  • 对于 30 % 30\% 30% 的数据,保证 n , m ≤ 1 0 3 n, m \le 10^3 n,m≤103。
  • 对于 70 % 70\% 70% 的数据,保证 n , m ≤ 1 0 5 n, m \le 10^5 n,m≤105。
  • 对于 100 % 100\% 100% 的数据,保证 1 ≤ n , m ≤ 1 0 7 1\le n,m \le 10^7 1≤n,m≤107。

思路:


AC代码:

在这里插入代码片
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const long long N=1e7+11;
long long s[N],m[N],sum[N],f[N];
long long cnt;
long long a[N];
long long p[N];
const long long mod=20101009;
inline int read()
{int s = 0,w = 1; char ch = getchar();while(ch < '0' || ch > '9'){if(ch == '-') w = -1; ch = getchar();}while(ch >= '0' && ch <= '9'){s =s * 10+ch - '0'; ch = getchar();}return s * w;
}
void unit(long long n){m[1]=1;for(long long i=2;i<=n;i++){if(!a[i]){s[++cnt]=i;m[i]=-1;}for(long long j=1;s[j]*i<=n&&j<=cnt;j++){//          int op=s[j]*i;a[s[j]*i]=1;if(i%s[j]==0){//              m[i*p[j]]=0;break;}m[s[j]*i]=m[i]*-1;}}for(long long i=1;i<=n;i++){sum[i]=(sum[i-1]+i*i%mod*(m[i]+mod))%mod;}
}
long long nn(long long x,long long y ){return ((x*(x+1)/2)%mod*((y*(y+1)/2)%mod))%mod;
}
long long calc(long long a,long long b)
{static long long max_rep;static long long ans;max_rep=min(a,b);ans=0;for(long long l=1,r;l<=max_rep;l=r+1){r=min(a/(a/l),b/(b/l));ans=(mod+ans+(1ll*nn(a/l,b/l)%mod*(sum[r]-sum[l-1])%mod)%mod)%mod;}return ans%mod;
}
long long solve(long long x,long long y){long long res=0;for(long long i=1,j;i<=min(x,y);i=j+1){j=min(x/(x/i),y/(y/i));res=(res+((j-i+1)*(i+j)/2%mod)*(calc(x/i,y/i)%mod))%mod;}return res%mod;
}
int main(){unit(N-10);long long t=1;while(t--){long long n=read();long long m=read();printf("%lld\n",solve(n,m));}
}

P1829 [国家集训队]Crash的数字表格 / JZPTAB(莫比乌斯反演)相关推荐

  1. P1829 [国家集训队]Crash的数字表格 / JZPTAB

    P1829 [国家集训队]Crash的数字表格 / JZPTAB 题意: 求∑i=1n∑j=1mlcm(i,j)\sum_{i=1}^{n}\sum_{j=1}^{m}lcm(i,j)∑i=1n​∑j ...

  2. BZOJ 2154 [国家集训队]Crash的数字表格 / JZPTAB(莫比乌斯反演,经典好题)(Luogu P1829)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 P1829 [国家集训队]Crash的数字表格 / JZPTAB(反演,经典好题) Problem S ...

  3. P1829 [国家集训队]Crash的数字表格(推了好久的mobius反演)

    P1829 [国家集训队]Crash的数字表格 / JZPTAB 推导过程 ∑i=1n∑j=1mlcm(i,j)\sum_{i = 1} ^{n} \sum_{j = 1} ^{m} lcm(i, j ...

  4. P1829-[国家集训队]Crash的数字表格/JZPTAB【莫比乌斯反演】

    正题 题目链接:https://www.luogu.com.cn/problem/P1829 题目大意 给出n,mn,mn,m求∑i=1n∑j=1mlcm(i,j)\sum_{i=1}^n\sum_{ ...

  5. 【数论】Crash的数字表格 / JZPTAB(P1829)

    正题 P1829 题目大意 给出n,m,求∑i=1n∑j=1mlcm(i,j)\sum_{i=1}^n\sum_{j=1}^mlcm(i,j)i=1∑n​j=1∑m​lcm(i,j) 解题思路 ∑i= ...

  6. P3704-[SDOI2017]数字表格【莫比乌斯反演】

    正题 题目链接:https://www.luogu.com.cn/problem/P3704 题目大意 TTT组询问,给出n,mn,mn,m求∏i=1n∏j=1mFbigcd(i,j)\prod_{i ...

  7. BZOJ 4816[SDOI2017]数字表格(莫比乌斯反演)

    题目链接 \(Description\) 用\(f_i\)表示\(fibonacci\)数列第\(i\)项,求\(\prod_{i=1}^{n}\prod_{j=1}^{m}f[gcd(i,j)]\) ...

  8. bzoj2154 Crash的数字表格

    2154: Crash的数字表格 Time Limit: 20 Sec  Memory Limit: 259 MB Submit: 4549  Solved: 1643 [Submit][Status ...

  9. 【BZOJ2117】 [2010国家集训队]Crash的旅游计划

    [BZOJ2117] [2010国家集训队]Crash的旅游计划 Description 眼看着假期就要到了,Crash由于长期切题而感到无聊了,因此他决定利用这个假期和好友陶陶一起出去旅游. Cra ...

最新文章

  1. 解决jQuery和其它库的冲突
  2. Go 1.5正式发布:实现自举、引入并发垃圾收集器
  3. 决策树 python 结果画图_scikit-learn决策树的python实现以及作图
  4. flask 快速入门链接
  5. deviceFilters与设备过滤
  6. [SDOI2014]旅行
  7. 使用node中的express解决vue-cli加载不到dev-server.js的问题
  8. sift算法_单应性Homograph估计:从传统算法到深度学习
  9. Liferay 7:Liferay内部博客地址
  10. mysql分表和分区的区别
  11. java 并发多线程显式锁概念简介 什么是显式锁 多线程下篇(一)
  12. 手写Spring框架
  13. 调试EasyDarwin开源项目EasyCamera-HK接入海康IPCamera 摄像机所遇到的大坑
  14. 一点感悟: 詹姆斯与全栈工程师
  15. SQL中去重的三种方式
  16. JAVA中级二 输入输出流,常见文件操作
  17. 猎人X猎人手游如何在电脑上玩 猎人X猎人手游模拟器教程
  18. UVA 1262 Password
  19. 《算法导论》第22章 基本的图算法 个人笔记
  20. 现货白银继续高位震荡整理 空头是否销声敛迹

热门文章

  1. 论CSDN多账号登录的BUG
  2. 解决:pip 下载太慢以及超时(timeout)
  3. 前端学习笔记36-水平方向的布局
  4. 最新广东省知识产权贯标奖励及补助政策汇总大全,包括广州、深圳等
  5. 51端口HTML跳转进不去,HTML页面跳转的5种方法
  6. pdf转word乱码怎么办?精准转换小妙招分享!
  7. 黑色星期五 Friday The Thirteenth
  8. html设置文本字体的标签是什么,使用字体从HTML设置标签文本NSAttributedString
  9. 废品回收微信小程序源码系统标准版开发简要说明
  10. ubuntu18.04.3安装和卸载Adobe Reader 9