莫比乌斯反演

  PoPoQQQ讲义第4题

  题解:http://www.cnblogs.com/jianglangcaijin/archive/2013/11/27/3446169.html

  感觉两次sqrt(n)的枚举是亮点……

RE:汗- -b 10^7是8位数,开数组少打了一个0……

 1 /**************************************************************
 2     Problem: 2154
 3     User: Tunix
 4     Language: C++
 5     Result: Accepted
 6     Time:8780 ms
 7     Memory:167292 kb
 8 ****************************************************************/
 9
10 //BZOJ 2154
11 #include<cstdio>
12 #include<cstdlib>
13 #include<cstring>
14 #include<iostream>
15 #include<algorithm>
16 #define rep(i,n) for(int i=0;i<n;++i)
17 #define F(i,j,n) for(int i=j;i<=n;++i)
18 #define D(i,j,n) for(int i=j;i>=n;--i)
19 using namespace std;
20
21 int getint(){
22     int v=0,sign=1; char ch=getchar();
23     while(ch<'0'||ch>'9') {if (ch=='-') sign=-1; ch=getchar();}
24     while(ch>='0'&&ch<='9') {v=v*10+ch-'0'; ch=getchar();}
25     return v*=sign;
26 }
27 /*******************tamplate********************/
28 const int N=10000086,P=20101009;
29 typedef long long LL;
30 LL prime[N],mu[N];
31 bool check[N];
32 LL n,m;
33 void getmu(int n){
34     int tot=0;
35     mu[1]=1;
36     for(int i=2;i<n;i++){
37         if (!check[i]){
38             prime[tot++]=i;
39             mu[i]=-1;
40         }
41         rep(j,tot){
42             if (i*prime[j]>n) break;
43             check[i*prime[j]]=1;
44             if (i%prime[j]) mu[i*prime[j]]=-mu[i];
45             else{
46                 mu[i*prime[j]]=0;
47                 break;
48             }
49         }
50     }
51     F(i,1,n) mu[i]=(mu[i-1]+mu[i]*i%P*i%P)%P;
52 }
53 inline LL Sum(LL n,LL m){
54     n=n*(n+1)/2%P;
55     m=m*(m+1)/2%P;
56     return n*m%P;
57 }
58 inline LL f(LL n,LL m){
59     LL ans=0,i,last;
60     for(i=1;i<=n;i=last+1){
61         last=min(n/(n/i),m/(m/i));
62         ans=(ans+(mu[last]-mu[i-1])%P*Sum(n/i,m/i)%P)%P;
63     }
64     return ans;
65 }
66 int main(){
67 //  freopen("input.txt","r",stdin);
68     n=getint(); m=getint();
69     if(n>m) swap(n,m);
70     getmu(m);
71     LL ans=0,i,last;
72     for(i=1;i<=n;i=last+1){
73         last=min(n/(n/i),m/(m/i));
74         ans=(ans+(i+last)*(last-i+1)/2%P*f(n/i,m/i)%P)%P;
75     }
76     if (ans<0) ans+=P;
77     printf("%lld\n",ans);
78     return 0;
79 }

View Code

2154: Crash的数字表格

Time Limit: 20 Sec  Memory Limit: 259 MB
Submit: 1327  Solved: 529
[Submit][Status][Discuss]

Description

今 天的数学课上,Crash小朋友学习了最小公倍数(Least Common Multiple)。对于两个正整数a和b,LCM(a, b)表示能同时被a和b整除的最小正整数。例如,LCM(6, 8) = 24。回到家后,Crash还在想着课上学的东西,为了研究最小公倍数,他画了一张N*M的表格。每个格子里写了一个数字,其中第i行第j列的那个格子里 写着数为LCM(i, j)。一个4*5的表格如下: 1 2 3 4 5 2 2 6 4 10 3 6 3 12 15 4 4 12 4 20 看着这个表格,Crash想到了很多可以思考的问题。不过他最想解决的问题却是一个十分简单的问题:这个表格中所有数的和是多少。当N和M很大 时,Crash就束手无策了,因此他找到了聪明的你用程序帮他解决这个问题。由于最终结果可能会很大,Crash只想知道表格里所有数的和mod 20101009的值。

Input

输入的第一行包含两个正整数,分别表示N和M。

Output

输出一个正整数,表示表格中所有数的和mod 20101009的值。

Sample Input

4 5

Sample Output

122
【数据规模和约定】
100%的数据满足N, M ≤ 107。

HINT

Source

数论

[Submit][Status][Discuss]

转载于:https://www.cnblogs.com/Tunix/p/4297366.html

【BZOJ】【2154】Crash的数字表格相关推荐

  1. BZOJ 2154 Crash的数字表格 (莫比乌斯反演)

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

  2. bzoj2154 Crash的数字表格

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

  3. bzoj2154: Crash的数字表格

    好神的莫比乌斯函数然后O(sqrt(n)*sqrt(n))好神的优化啊. #include<cstdio> #include<cstring> #include<ccty ...

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

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

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

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

  6. 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 ...

  7. 【BZOJ2154】Crash的数字表格 [莫比乌斯反演]

    Crash的数字表格 Time Limit: 20 Sec  Memory Limit: 259 MB [Submit][Status][Discuss] Description 今天的数学课上,Cr ...

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

    [国家集训队]Crash的数字表格 / JZPTAB 题目描述 今天的数学课上,Crash 小朋友学习了最小公倍数(Least Common Multiple).对于两个正整数 a a a 和 b b ...

  9. Crash的数字表格

    Crash的数字表格 求\(\sum_{i=1}^N\sum_{j=1}^Mlcm(i,j)\) 解 设\(N<M\),显然有 \[\sum_{i=1}^N\sum_{j=1}^M\frac{i ...

最新文章

  1. 刘知远:近年来开源的算法代码、工具包列表
  2. sysbench的安装详解
  3. dSploitzANTI渗透教程之启动zANTI工具
  4. setDAta 字符串拼接
  5. 36篇博文带你学完opencv :python+opencv进阶版学习笔记目录
  6. ubuntu14.04中 gedit 凝视能显示中文,而source insight中显示为乱码的解决的方法
  7. CentOS查看每个进程的网络流量
  8. docker:安装mysql多个
  9. LeetCode 1504. 统计全 1 子矩形(记录左侧的连续1的个数)
  10. codevs——1036 商务旅行
  11. 股票决定卖不卖?近六成粉丝支持马斯克出售10%特斯拉股票
  12. (转)LUA与python根本就不具有可比性
  13. Swiper 在vue中的使用,loop=true获取真实index,数据更新刷新初始化swiper
  14. Java 12字符串方法
  15. python查询ip归属地,Python查询IP地址归属完整代码
  16. latex论文模板_国内高校LaTeX学位论文模版大全
  17. 用Python批量下载MOOC资源
  18. 易优cms设置完伪静态之后,产品板块出现404
  19. C语言利用指针实现字符串逆序输出
  20. 计算机里什么文件无法删除,电脑里面有哪些不能删除的文件?

热门文章

  1. 希尔排序算法图解分析
  2. 山西农信社计算机知识,山西人事考试网 山西农信社考试计算机知识高频考点(二)...
  3. java和ffmpeg使用内存转码_FFMPEG基于内存的转码实例
  4. java8 监控文件变化_[Java 8] (4) 列举目录下的所有文件和监视文件变化
  5. 面试,MySQL 搞透这 20 道就稳了
  6. mysql帖子排序_mysql - 无法按元值对帖子排序 - SO中文参考 - www.soinside.com
  7. RocketMQ-Spring 毕业两周年,为什么能成为 Spring 生态中最受欢迎的 messaging 实现?
  8. 超实用!K8s 开发者必须知道的 6 个开源工具
  9. a king读后感 love of the_读后感kinglear
  10. mybatis 自动生成integer_Intellij IDEA 中使用 MyBatis-generator 自动生成 MyBatis代码