[BZOJ3561] DZY Loves Math VI
(14.10.28改)
本来只想写BZOJ3739:DZY Loves Math VIII的,不过因为和VI有关系,而且也没别人写过VI的题解,那么写下。
不过我还不会插公式……
http://www.lydsy.com/JudgeOnline/problem.php?id=3561
想想还是要把代码放一下的,不然可能一辈子都不会写了= =
为什么那么像FancyCoder写的呢……因为这题本来就是他教我哒……读入优化快速筛甚至快速幂的模板都是他的= =
额Mobius反演系列问题的入门也是看Jcvb大爷blog学的……
= =
简要说下,设F(d,k)为正整数d次幂的前K项和。
然后化成∑(D=1...n)∑(d|D)d^d*μ(D/d)*F(d,n/d)*F(d,m/d)……
发现能预处理出F(d,n/d)和F(d,m/d)就好了……
然后我对杜教多项式求和的课件进行了艰苦卓绝的复习(学习)……当然失败了。
最后看Fancy代码……
暴力!
居然是暴力!
妈蛋……
简要的说……就是裸的不能裸暴力啊泥煤,预处理时间复杂度O(∑(n/d))=O(nlogn)。
#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace std;#define rep(i,j,n) for(i=j;i<=n;i++)template<class T> inline void read(T&x){char c;for(c=getchar();c<'0'||c>'9';c=getchar());for(x=0;c>='0'&&c<='9';c=getchar())x=x*10+c-'0';};typedef long long ll;const int N=500000;const int mod=1000000007;ll i,j,k,l,tt,d2,res,ans,d;int P,Q,n,m;ll s[N+10],t[N+10];ll pow(ll a){ll ans=1,b=a;for(a%=mod;b;b>>=1,a=a*a%mod)if(b&1)ans=ans*a%mod;return ans;} bool pd[N+1];int u[N+1],p[N/5+1];void pre(){ pd[1]=1;u[1]=1; rep(i,2,N){ if(!pd[i]){p[++p[0]]=i;u[i]=-1;} for(int j=1,mul;j<=p[0]&&(mul=i*p[j])<=N;j++){ pd[mul]=1; if(i%p[j]==0){u[mul]=0;break;} u[mul]=-u[i]; } }}int main(){ read(n);read(m); if(n>m)swap(n,m); pre(); rep(i,1,m)t[i]=1; rep(d,1,n){ Q=m/d; rep(i,1,Q)t[i]=t[i]*i%mod; rep(i,1,Q)s[i]=(s[i-1]+t[i])%mod; res=0;P=n/d; rep(d2,1,P)if(u[d2]){ tt=t[d2]*t[d2]%mod*s[P/d2]%mod*s[Q/d2]%mod; res+=tt*u[d2]; } res%=mod; ans=(ans+res*pow(d))%mod; } printf("%lld\n",ans); return 0;}[BZOJ3561] DZY Loves Math VI的更多相关文章
- BZOJ3561 DZY Loves Math VI 数论 快速幂 莫比乌斯反演
原文链接http://www.cnblogs.com/zhouzhendong/p/8116330.html UPD(2018-03-26):回来重新学数论啦.之前的博客版面放在更新之后的后面. 题目 ...
- BZOJ3561 DZY Loves Math VI 莫比乌斯反演
传送门 看到\(gcd\)相关先推式子(默认\(N \leq M\)): \(\begin{align*} \sum\limits_{i=1}^N \sum\limits_{j=1}^M (lcm(i ...
- BZOJ3561 DZY Loves Math VI 【莫比乌斯反演】
题目 给定正整数n,m.求 输入格式 一行两个整数n,m. 输出格式 一个整数,为答案模1000000007后的值. 输入样例 5 4 输出样例 424 提示 数据规模: 1<=n,m<= ...
- 【BZOJ3561】DZY Loves Math VI (数论)
[BZOJ3561]DZY Loves Math VI (数论) 题面 BZOJ 题解 \[\begin{aligned} ans&=\sum_{i=1}^n\sum_{j=1}^m\sum_ ...
- BZOJ 3561 DZY Loves Math VI
BZOJ 3561 DZY Loves Math VI 求\(\sum_{i=1}^{n}\sum_{j=1}^{m}\text{lcm}(i,j)^{\gcd(i,j)}\),钦定\(n\leq m ...
- 【BZOJ 3561】 3561: DZY Loves Math VI (莫比乌斯,均摊log)
3561: DZY Loves Math VI Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 205 Solved: 141 Description ...
- 【bzoj3561】DZY Loves Math VI 莫比乌斯反演
题目描述 给定正整数n,m.求 输入 一行两个整数n,m. 输出 一个整数,为答案模1000000007后的值. 样例输入 5 4 样例输出 424 题解 莫比乌斯反演 (为了方便,以下公式默认$ ...
- 【BZOJ】3561: DZY Loves Math VI
题意 求\(\sum_{i=1}^{n} \sum_{j=1}^{m} lcm(i, j)^{gcd(i, j)}\)(\(n, m<=500000\)) 分析 很显然要死推莫比乌斯 题解 设\ ...
- ●BZOJ 3561 DZY Loves Math VI
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=3561 题解: 莫比乌斯反演 $$\begin{aligned}ANS&=\sum_{ ...
随机推荐
- PHP5中使用PDO连接数据库
PDO 如何连接 new PDO("mysql:host=localhost;dbname=php100","root", “ "); 默认这个不是 ...
- php获取汉字首字母
php获取汉字首字母,可以用于按字母对数据进行检索排序等. 分享下网上找的代码.亲测有效. function getFirstCharter($str){ if(empty($str)){return ...
- php读取memcache二进制数据
memcache作为一个数据中间层,经常用来做数据交换. 比如在某个系统内部我们规定如下的用户状态的信息,每个用户只需要存续52个字节. Key state#ID 如”state#10888” Val ...
- XML解析方式与解析工具
DOM解析原理: 1)JAXP (oracle-Sun公司官方) 2)JDOM工具(非官方) 3)Dom4J工具(非官方) 三大框架(默认读取xml的工具就是Dom4j) ....... SAX解析原 ...
- c++ 高效文本读写
上数据结构课,做project,数据老师要求我们多做测试,而文本文件可以有效记录这些东东,这样我想起了文件的读写,下面是渣渣我个人的一些想法,大神们看见有错的,尽管指出(orz~~~囧,木有人看我的呀 ...
- ural 1052 Rabbit Hunt
http://acm.timus.ru/problem.aspx?space=1&num=1052 #include <cstdio> #include <cstring&g ...
- 不建议用wxWidgets,底层有过多的bug
不建议用wxWidgets, 搞了wxWidgets 3年,不是所说的那么容易跨平台,很多bug,不稳定, 莫名其妙的崩溃找源代码修改编译真是费时费力. 开发速度真没有使用本地sdk开发高, 很难定制 ...
- 2014-07-29 浅谈MVC框架中Razor与ASPX视图引擎
今天是在吾索实习的第15天.随着准备工作的完善,我们小组将逐步开始手机端BBS的开发,而且我们将计划使用MVC框架进行该系统的开发.虽然我们对MVC框架并不是非常熟悉,或许这会降低我们开发该系统的效率 ...
- 2015.9.11模拟赛 codevs 4160【会玩的】
题目描述 Description hzwer真的很会玩啊…他有一个n*m的方格,每次可以给方格添加一整行或一整列,但是不能删除.现在他想要让总格子数超过k个,但是又想让总格子数尽可能小.请找出这时的n ...
- Razor 在JS中嵌入后台变量
HTML 中定义全局变量 @{ int CurrentUserId =ViewBag.CurrentUserId; } JS中取值方式var CurrentUserId = parseInt(@Htm ...