2154: Crash的数字表格
Time Limit: 20 Sec Memory Limit: 259 MB
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 ≤ 10^7。

/*
积性函数.n   m
求∑  ∑lcm(i,j).i=1 j=1
推一波式子.
ans=∑(s[n/i]*s[m/i]f[i]).
s[i]=(i*(i+1)/2).
f[i]=i*∑u(d)*d.d|i
然后主要问题就是怎么求f[i]了.
这个东西是积性函数.
筛一下就好了.
复杂度O(n).
算答案的时候不用除法分块可能过不了?
也许是我写的常数比较大吧...
*/
#include<iostream>
#include<cstdio>
#define LL long long
#define MAXN 10000010
#define mod 20101009
#define ni 10050505
using namespace std;
int pri[MAXN],tot,sum[MAXN];
LL n,m,ans,f[MAXN],s[MAXN];
bool vis[MAXN];
void pre()
{f[1]=1;for(int i=2;i<=n;i++){if(!vis[i]) pri[++tot]=i,f[i]=1-i;for(int j=1;j<=tot&&i*pri[j]<=n;j++){vis[i*pri[j]]=true;if(i%pri[j]) f[i*pri[j]]=(f[i]*f[pri[j]])%mod;else{f[i*pri[j]]=f[i];break;}}}for(LL i=1;i<=n;i++) sum[i]=(sum[i-1]+f[i]*i)%mod;
}
void slove()
{int last;for(LL i=1;i<=n;i++) s[i]=((i*(i+1))%mod*ni)%mod;for(LL i=1;i<=m;i=last+1){last=min(n/(n/i),m/(m/i));ans=(ans+(s[n/i]%mod*s[m/i]%mod*(LL)(sum[last]-sum[i-1]))%mod+mod)%mod;}cout<<ans;
}
int main()
{cin>>n>>m;if(n<m) swap(n,m);pre();slove();return 0;
}

转载于:https://www.cnblogs.com/nancheng58/p/10068006.html

Bzoj 2154: Crash的数字表格(积性函数)相关推荐

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

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

  2. 【BZOJ】【2154】Crash的数字表格

    莫比乌斯反演 PoPoQQQ讲义第4题 题解:http://www.cnblogs.com/jianglangcaijin/archive/2013/11/27/3446169.html 感觉两次sq ...

  3. bzoj2154 Crash的数字表格

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

  4. bzoj2154: Crash的数字表格

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

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

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

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

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

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

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

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

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

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

  10. 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. 知其然不知其所以然的悲惨后果【EF CodeFirst 实体关系两日游】
  3. android线程控制UI更新(Handler 、post()、postDelayed()、postAtTime)
  4. 当DRM出错时的解决办法
  5. mysql虚拟列表_「前端进阶」高性能渲染十万条数据(虚拟列表)
  6. QQ连连看棋盘数组找法:
  7. python中怎样向字典中添加值_python的字典中,如何向指定路径添加值?
  8. 入门快应用的另一种姿势
  9. ASP.NET身份验证机制membership入门——API篇
  10. 基于单片机的水库控制系统设计
  11. 电感式dcdc原理(转)
  12. P1978 集合 (set)
  13. MySql ORDER BY排序用法
  14. Python秩和检验
  15. 常见MIME类型设置方法
  16. Tomcat And Servlet (1)
  17. 八位二进制数能表示数的范围以及原码、反码和补码含义
  18. 如何有效阅读《C++ Primer》那么厚的书
  19. Java的“小心心”
  20. 网址拦截查询接口API源码

热门文章

  1. Linux iptables防火墙详解(三)——iptables匹配条件
  2. SchoolTool:先进的学院管理和信息系统
  3. oracle Dataguard数据库不同步处理备忘
  4. 在Leangoo里怎么修改密码?
  5. ajax data传值
  6. iOS 开发中 通过AVAssetWriter将录像视频写到指定文件
  7. 全面分析网络安全防御
  8. python的sift算法_opencv python SIFT(尺度不变特征变换)
  9. c语言元素累积的计算,C语言:计算输出给定数组中每相邻两个元素的平均值的平方根之和。...
  10. java自定义日志_java-自定义日志记录以在运行时收集消息