bzoj 2154
收获:
1、当一个东西的取值范围很小时,或者感觉它很麻烦时,就枚举它
2、熟悉mobius函数、euler函数的和函数,以及euler函数用mobius函数的表示。
3、下取整分块理解更深了。
/**************************************************************
Problem: 2154
User: idy002
Language: C++
Result: Accepted
Time:5584 ms
Memory:157916 kb
****************************************************************/ #include <cstdio>
#include <iostream>
#define M 20101009
using namespace std; typedef long long dnt; int prm[], isnot[], mu[], ptot;
dnt mds[]; void init( int n ) {
mu[] = ;
for( int i=; i<=n; i++ ) {
if( !isnot[i] ) {
prm[++ptot] = i;
mu[i] = -;
}
for( int j=; j<=ptot && i*prm[j]<=n; j++ ) {
isnot[i*prm[j]] = true;
if( i%prm[j]== ) {
mu[i*prm[j]] = ;
break;
}
mu[i*prm[j]] = -mu[i];
}
}
for( dnt d=; d<=n; d++ ) {
mds[d] = (mu[d]*d*d)%M;
mds[d] += mds[d-];
if( mds[d]>=M ) mds[d]-=M;
if( mds[d]< ) mds[d]+=M;
}
} inline dnt S( dnt x, dnt y ) {
return (((+x)*x/%M)*(((+y)*y)/%M)%M);
}
dnt F( dnt x, dnt y ) {
if( x>y ) swap(x,y);
dnt rt = ;
for( dnt d=; d<=x; d++ ) {
dnt dd = min( x/(x/d), y/(y/d) );
rt += S(x/d,y/d) * (mds[dd]-mds[d-]) % M;
if( rt< ) rt += M;
if( rt>=M ) rt -= M;
d = dd;
}
return rt;
}
dnt calc( dnt n, dnt m ) {
if( n>m ) swap(n,m);
dnt rt = ;
for( dnt d=; d<=n; d++ ) {
dnt dd=min( n/(n/d), m/(m/d) );
rt += ((d+dd)*(dd-d+)/ % M) * F( n/d, m/d ) % M;
if( rt< ) rt+=M;
if( rt>=M ) rt-=M;
d = dd;
}
return rt;
}
int main() {
int n, m;
scanf( "%d%d", &n, &m );
if( n>m ) swap(n,m);
init(n);
printf( "%lld\n", calc(n,m) );
}
bzoj 2154的更多相关文章
- bzoj 2154 莫比乌斯反演求lcm的和
题目大意: 表格中每一个位置(i,j)填的值是lcm(i,j) , 求n*m的表格值有多大 论文贾志鹏线性筛中过程讲的很好 最后的逆元我利用的是欧拉定理求解的 我这个最后线性扫了一遍,勉强过了,效率不 ...
- 【莫比乌斯反演】关于Mobius反演与lcm的一些关系与问题简化(BZOJ 2154 crash的数字表格&&BZOJ 2693 jzptab)
BZOJ 2154 crash的数字表格 Description 今天的数学课上,Crash小朋友学习了最小公倍数(Least Common Multiple).对于两个正整数a和b,LCM(a, b ...
- [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, ...
- [BZOJ 2154]Crash的数字表格(莫比乌斯反演+数论分块)
[BZOJ 2154]Crash的数字表格(莫比乌斯反演+数论分块) 题面 求 \[\sum_{i=1}^{n} \sum_{j=1}^{m} \mathrm{lcm}(i,j)\] 分析 \[\su ...
- BZOJ 2154: Crash的数字表格 [莫比乌斯反演]
2154: Crash的数字表格 Time Limit: 20 Sec Memory Limit: 259 MBSubmit: 2924 Solved: 1091[Submit][Status][ ...
- BZOJ 2154 Crash的数字表格
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2154 题意: 思路: i64 mou[N]; void init(int N){ ...
- bzoj 2154 Crash的数字表格(莫比乌斯反演及优化)
Description 今天的数学课上,Crash小朋友学习了最小公倍数(Least Common Multiple).对于两个正整数a和b,LCM(a, b)表示能同时被a和b整除的最小正整数.例如 ...
- 【BZOJ 2154】Crash的数字表格 (莫比乌斯+分块)
2154: Crash的数字表格 Description 今天的数学课上,Crash小朋友学习了最小公倍数(Least Common Multiple).对于两个正整数a和b,LCM(a, b)表示能 ...
- ●BZOJ 2154 Crash的数字表格
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=2154 题解: 莫比乌斯反演. 题意还是很清楚的,就不赘述了. 显然有 $ANS=\sum_{ ...
随机推荐
- React 16 源码瞎几把解读 【一】 从jsx到一个react 虚拟dom对象
一.jsx变createElement 每一个用jsx语法书写的react组件最后都会变成 react.createElement(...)这一坨东西, // 转变前 export default ( ...
- 获取网站所有的url正则表达式
C# string pattern1 = @"(?is)<[^>]*?src=(['""\s]?)(?<src>[^'""\s ...
- 一致性hash理解
在做memcached分布式集群时往往要用到一致性hash算法来调节缓存数据的分布. 通常的hash算法是以服务器数量N作为模数,使用key%N的值来获得最终位置,显然当服务器数量发生变化即N发生变化 ...
- Maven核心概念
一.坐标 在平面几何中,坐标(x,y)可以标识平面中唯一的一个点.在maven中,坐标是为了定位一个唯一确定的jar包.Maven世界拥有大量构建,我们需要找一个用来唯一标识一个构建的统一规范:拥有了 ...
- [ python ] 接口类和抽象类
接口类 继承有两种用途:1. 继承基类的方法,并且做出自己的改变或者扩展(代码重用)2. 申明某个子类兼容于某基类,定义一个接口类interface,接口类定义了一些接口名且未实现接口的功能,子类继承 ...
- POJ 3279 Fliptile(DFS+反转)
题目链接:http://poj.org/problem?id=3279 题目大意:有一个n*m的格子,每个格子都有黑白两面(0表示白色,1表示黑色).我们需要把所有的格子都反转成黑色,每反转一个格子, ...
- MySQL之正则表达式
一.介绍 正则表达式用来描述或者匹配符合规则的字符串.它的用法和like比较相似,但是它又比like更强大,能够实现一些很特殊的规则匹配:正则表达式需要使用REGEXP命令,匹配上返回"1& ...
- 保存最后N个元素
cookbook系列 问题:对要搜索的值的最后几项做个有限的历史记录. 方案: #coding=utf- from collections import deque def search(lines, ...
- 小甲鱼C++笔记(下)25-48
二十五 二十六 二十七 重载 运算符重载 1. 作为成员函数 #include <iostream> using namespace std; class Add { private ...
- bzoj 1116
思路:每个连通块都判是否有环. #include<bits/stdc++.h> #define LL long long #define fi first #define se secon ...