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;
}

最新文章

  1. 完美解释if-modified-since/not-modified 文件头的意义
  2. MyEclipse黑色主题
  3. 基于Moodle的IT课程辅助教育平台搭建
  4. VS2010 C++环境下DLL和LIB文件目录及名称修改
  5. spring security防御会话伪造session攻击
  6. 使用python脚本实现基于指定字符串的文本排序
  7. python中string模块各属性以及函数的用法
  8. 检测到有潜在危险的 Request.Form
  9. HDU ACM-Steps
  10. AntData.ORM框架 之DBModel CodeGen如何使用
  11. Linux如何安装VMware Tools
  12. Web压力测试和手机App测试
  13. C#调用Java的WebService添加SOAPHeader验证(2)
  14. BN算法
  15. 2018秋寒假作业5—PTA编程总结2
  16. 使用Redis中间件解决商品秒杀活动中出现的超卖问题(使用Java多线程模拟高并发环境)
  17. mybatis分页插件PagePlugin
  18. Angular4学习笔记(四)- 依赖注入
  19. OSG中距离转像素公式(PIXEL_SIZE_ON_SCREEN)
  20. DOS下如何打开程序

热门文章

  1. NEST analyze与mapping
  2. android 常用库的地址--dialog,recycler
  3. kubernetes第十章--ConfigMap 管理配置
  4. Jenkins 构建方式有几种
  5. 初始SQL语句 简单使用
  6. Synopsys DC综合脚本示例
  7. UCOSIII系统内部任务
  8. mysql死锁检查
  9. oracle命令行导出、导入dmp文件
  10. Android笔记(四十七) Android中的数据存储——XML(三)SAX解析