2693: jzptab - BZOJ
Description

Input
一个正整数T表示数据组数
接下来T行 每行两个正整数 表示N、M
Output
T行 每行一个整数 表示第i组数据的结果
Sample Input
1
4 5
Sample Output
122
HINT
T <= 10000
N, M<=10000000
题解君:http://hi.baidu.com/mikeni2006/item/b4f78a4520de9bab61d7b985
看了一上午才看懂,最后终于在lazycal的帮助下想出来了
我们需要先预处理出那个奇怪的前缀和就是
d Σ d* Σ d'*μ(d') i=1 d'|d
然后因为trunc(n/i)和trunc(m/i)都只有根号级别个值,也就是只要枚举这些值就行了
为了跑得快,类型用的longint,然后写了很多int64函数
const
maxn=;
h=;
var
flag:array[..maxn]of boolean;
f,s:array[..maxn]of longint;
p:array[..]of longint;
t,n,m,tot:longint; function max(x,y:longint):longint;
begin
if x>y then exit(x);
exit(y);
end; function min(x,y:longint):longint;
begin
if x<y then exit(x);
exit(y);
end; function get(a:longint):longint;
begin
exit(((int64(a)*a+a)>>)mod h);
end; procedure pre;
var
i,j:longint;
begin
f[]:=;
for i:= to do
begin
if flag[i]=false then
begin
inc(tot);
p[tot]:=i;
f[i]:=-i+h;
end;
for j:= to tot do
begin
if int64(p[j])*i> then break;
flag[p[j]*i]:=true;
if i mod p[j]= then
begin
f[p[j]*i]:=f[i];
break;
end
else f[p[j]*i]:=int64(f[i])*f[p[j]]mod h;
end;
end;
for i:= to do
s[i]:=(int64(s[i-])+int64(f[i])*i)mod h;
end; procedure main;
var
i,j,t,li,ri,lj,rj,l,r,ans:longint;
begin
read(n,m);
if n>m then
begin
t:=n;n:=m;m:=t;
end;
ans:=;
i:=;
while sqr(i)<=n do
begin
ans:=(int64(ans)+((int64(f[i])*i mod h)*get(trunc(n/i))mod h)*get(trunc(m/i)))mod h;
inc(i);
end;
j:=trunc(m/i);
i:=trunc(n/i);
while (i>) and (j>) do
begin
ri:=trunc(n/i);
li:=trunc(n/(i+))+;
lj:=trunc(m/(j+))+;
rj:=trunc(m/j);
l:=max(li,lj);
r:=min(ri,rj);
if l<=r then ans:=(int64(ans)+(int64(s[r]-s[l-]+h)*get(i)mod h)*get(j))mod h;
if ri<=rj then dec(i)
else dec(j);
end;
writeln(ans);
end; begin
pre;
read(t);
while t> do
begin
dec(t);
main;
end;
end.
2693: jzptab - BZOJ的更多相关文章
- [bzoj 2693] jzptab & [bzoj 2154] Crash的数字表格 (莫比乌斯反演)
题目描述 TTT组数据,给出NNN,MMM,求∑x=1N∑y=1Mlim(x,y)\sum_{x=1}^N\sum_{y=1}^M lim(x,y)\newlinex=1∑Ny=1∑Mlim(x, ...
- 【莫比乌斯反演】关于Mobius反演与lcm的一些关系与问题简化(BZOJ 2154 crash的数字表格&&BZOJ 2693 jzptab)
BZOJ 2154 crash的数字表格 Description 今天的数学课上,Crash小朋友学习了最小公倍数(Least Common Multiple).对于两个正整数a和b,LCM(a, b ...
- bzoj 2693: jzptab 线性筛积性函数
2693: jzptab Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 444 Solved: 174[Submit][Status][Discus ...
- BZOJ 2693: jzptab [莫比乌斯反演 线性筛]
2693: jzptab Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1194 Solved: 455[Submit][Status][Discu ...
- BZOJ 2693: jzptab( 莫比乌斯反演 )
速度居然#2...目测是因为我没用long long.. 求∑ lcm(i, j) (1 <= i <= n, 1 <= j <= m) 化简之后就只须求f(x) = x∑u( ...
- ●BZOJ 2693 jzptab
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=2693 题解: 莫比乌斯反演 先看看这个题,BZOJ 2154 Crash的数字表格,本题的升 ...
- 【BZOJ】2693: jzptab
http://www.lydsy.com/JudgeOnline/problem.php?id=2693 题意:求$\sum_{i=1}^{n} \sum_{j=1}^{m} lcm(i, j)$, ...
- BZOJ 2693 jzptab
http://www.lydsy.com/JudgeOnline/problem.php?id=2693 题解: 考虑把lcm转化成gcd那答案就是然后神奇的设:就有:一样可以枚举 的取值,这是O(√ ...
- Crash的数字表格 BZOJ 2154 / jzptab BZOJ 2693
jzptab [问题描述] 求: 多组询问 [输入格式] 一个正整数T表示数据组数 接下来T行 每行两个正整数 表示N.M [输出格式] T行 每行一个整数 表示第i组数据的结果 [样例输入] 1 4 ...
随机推荐
- CSS之全屏背景图
吐槽啦:Yeah 明天就是国庆了o(* ̄▽ ̄*)o!哈哈,提前祝福各位园友国庆快乐.假期愉快.生活美满.天天开心!国庆我要回家一趟,把一些不用的东西带回家,走访一下亲朋好友,在家打几天酱油~~~ 言 ...
- GitHub之创建
O(∩_∩)O~ 爱“搞事”的我又创了一个Github账号,和当初加入博客园的初衷一样,为了广泛交流和学习而已.很久之前我就发现了有很多人都在使用GitHub,然而当时看不懂英文(绝大部分都是英文), ...
- Chrome JS内存泄漏排查方法(Chrome Profiles)
原文网址:http://blog.csdn.net/kaitiren/article/details/19974269 JS内存泄漏排查方法(Chrome Profiles) Google Ch ...
- 【原创】如何找到Oracle中哪条记录被锁
通常有这种情况,某个表或者准确的说是表的某条记录被锁(TX锁),在业务层面排查之余,一般都会想知道是哪条记录被锁,每次被锁的是否是同一条记录?还是每次都不同?通过记录可以找到这条记录可以在哪个模块.哪 ...
- 程序代码创建IISWEB站点
#region 新建立一个IISWEB站点 ///<summary> ///添加一个站点 ///</summary> public string CreateWebSite() ...
- (转)RabbitMQ消息队列(七):适用于云计算集群的远程调用(RPC)
在云计算环境中,很多时候需要用它其他机器的计算资源,我们有可能会在接收到Message进行处理时,会把一部分计算任务分配到其他节点来完成.那么,RabbitMQ如何使用RPC呢?在本篇文章中,我们将会 ...
- BCB6中SCALERICHVIEW加入GIF动画
记载下,花了不少时间. 1. 项目导入文件GIFImage.pas 来源:http://melander.dk/delphi/gifimage/ 2. 项目导入文件RVGifAnimate.pas ...
- Ubuntu下MySQL忘记root密码重置
MySQL忘记root密码肿么办?-_-||| 这种情况虽然不是很常见,但是有时长时间没有登录系统,还真会忘记密码.这时候,如果您能以系统管理员权限登陆密码,那还是有救的.放大招,将其重置即可. ...
- FPGA统计摄像头输出-基于MD9T112
FPGA HDL源程序 FPGA统计摄像头的输出像素,窗口尺寸等等 //---------------------------------------------------------------- ...
- 用户不在sudoers文件中的解决方法
1.更改/etc/sudoers权限为777 2.修改文件中 root ALL=(ALL) ALL 下方增加 user ALL=(ALL) ALL 3.回复文件/e ...