bzoj3561
3561: DZY Loves Math VI
Time Limit: 10 Sec Memory Limit: 256 MB
Submit: 240 Solved: 163
[Submit][Status][Discuss]
Description

Input
Output
Sample Input
Sample Output
HINT
数据规模:
1<=n,m<=500000,共有3组数据。
Source
挖坑
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
upd 9.15 我来填坑了 又做了一遍...
套路推导一番我们可以得到一个式子,我不会写LaTeX。。。。。。请移步lych大神的博客
然后重点在于怎么求值,其实暴力就行了,我们观察那个式子,其实我们只需要求到min(n/i,m/i)就行了,然后发现这样其实是调和级数,那么我们每次先把1->min(n/i,m/i)的sum调和级数更新一下,然后再调和级数计算答案,我们看后面那个i^d*j^d其实刚才被更新过了,直接O(1)就可以算出来,然后枚举p也是调和级数的,所以总的复杂度还是O(NlogN) 完了。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = , mod = ;
int n, m;
ll ans;
ll mu[N], a[N], sum[N];
int p[N], mark[N];
ll power(ll x, ll t)
{
ll ret = ;
for(; t; t >>= , x = x * x % mod) if(t & ) ret = ret * x % mod;
return ret;
}
void Init()
{
mu[] = ;
for(int i = ; i <= ; ++i)
{
if(!mark[i])
{
p[++p[]] = i;
mu[i] = -;
}
for(int j = ; j <= p[] && p[j] * i <= ; ++j)
{
mark[i * p[j]] = ;
if(i % p[j] == )
{
mu[i * p[j]] = ;
break;
}
mu[i * p[j]] = -mu[i];
}
}
}
int main()
{
Init();
scanf("%d%d", &n, &m);
if(n > m) swap(n, m);
for(int i = ; i <= m; ++i) a[i] = ;
for(int d = ; d <= n; ++d)
{
ll delta = ;
for(int p = ; p * d <= m; ++p)
{
a[p] = a[p] * (ll)p % mod;
sum[p] = (sum[p - ] + a[p]) % mod;
}
for(int p = ; p * d <= n; ++p) if(mu[p])
delta = (delta + mu[p] * a[p] % mod * a[p] % mod * sum[n / d / p] % mod * sum[m / d / p] % mod) % mod;
ans = (ans + delta * power(d, d) % mod) % mod;
}
printf("%lld\n", ans);
return ;
}
bzoj3561的更多相关文章
- 【BZOJ3561】DZY Loves Math VI (数论)
[BZOJ3561]DZY Loves Math VI (数论) 题面 BZOJ 题解 \[\begin{aligned} ans&=\sum_{i=1}^n\sum_{j=1}^m\sum_ ...
- BZOJ3561 DZY Loves Math VI 数论 快速幂 莫比乌斯反演
原文链接http://www.cnblogs.com/zhouzhendong/p/8116330.html UPD(2018-03-26):回来重新学数论啦.之前的博客版面放在更新之后的后面. 题目 ...
- [BZOJ3561] DZY Loves Math VI
(14.10.28改) 本来只想写BZOJ3739:DZY Loves Math VIII的,不过因为和VI有关系,而且也没别人写过VI的题解,那么写下. 不过我还不会插公式…… http://www ...
- 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 题解 莫比乌斯反演 (为了方便,以下公式默认$ ...
- bzoj3561 莫比乌斯反演
DZY Loves Math VI Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 518 Solved: 344[Submit][Status][D ...
- BZOJ3561 DZY Loves Math VI 【莫比乌斯反演】
题目 给定正整数n,m.求 输入格式 一行两个整数n,m. 输出格式 一个整数,为答案模1000000007后的值. 输入样例 5 4 输出样例 424 提示 数据规模: 1<=n,m<= ...
- DZY Loves Math系列
link 好久没写数学题了,再这样下去吃枣药丸啊. 找一套应该还比较有意思的数学题来做. [bzoj3309]DZY Loves Math 简单推一下. \[\sum_{i=1}^n\sum_{j=1 ...
- # DZY Love Math 系列
DZY Love Math 系列 [BOZJ3309] DZY Loves Math 顺着套路就能得到:\(Ans = \sum_{T=1}\lfloor \frac{n}{T} \rfloor \l ...
随机推荐
- 零基础入门Python数据分析,只需要看懂这一张图,附下载链接!
摘要 在做数据分析的过程中,经常会想数据分析到底是什么?为什么要做数据数据分析?数据分析到底该怎么做?等这些问题.对于这些问题,一开始也只是有个很笼统的认识. 最近这两天,读了一下早就被很多人推荐的& ...
- C语言不容易识别的坑
1.重复两次定义 #include<stdio.h> #include<stdlib.h> #include<string.h> int a,b; void fun ...
- HTML5 & CSS3 & font-family
HTML5 & CSS3 & font-family 中文字体的英文名称 宋体* SimSun 黑体* SimHei 微软雅黑* Microsoft YaHei 微软正黑体 http: ...
- Codeforces Round #258 (Div. 2) D
D. Count Good Substrings time limit per test 2 seconds memory limit per test 256 megabytes input sta ...
- [ C++ 快速高精度模板 ] [ BigN类 ] 大整数类 高精度 模板 BigInt FFT 快速傅里叶变换
[原创 转载请注明]瞎写的,如果代码有错,或者各位大佬有什么意见建议,望不吝赐教 更新日志: 对于规模较小的整数乘法使用$$O(n^2)$$方法,提高速度 modify()和operator[]的bu ...
- 【NOIP2017】
NOIP2015 省Rank136 NOIP2016 省Rank165 NOIP2017 求进省Rank前100
- 中国福利彩票,牛B,开奖和数据传输有什么关系?
昨天,由中国教育电视台直播的福利彩票“双色球”15011期开奖,在没有事先预告的情况下突然取消.晚上11点40分左右,中国福利彩票发行管理中心唯一指定网络信息发布媒体——中彩网官方微博出乎意料地在网上 ...
- csu1364 Interview
对拍了一波才找到的错误,此题我用的是二分答案加倍增查询,实际上query那里我觉得仍然有缺陷,因为每一次我的查找还是在循环找到一个k使得x+2^k <= y,而错的地方也正在此地,一开始没有判断 ...
- Model、ModelMap、ModelAndView的使用和区别
1.Model的使用 数据传递:Model是通过addAttribute方法向页面传递数据的: 数据获取:JSP页面可以通过el表达式或C标签库的方法获取数据: return:return返回的是指定 ...
- 洛谷 P1566 加等式
P1566 加等式 题目描述 对于一个整数集合,我们定义“加等式”如下:集合中的某一个元素可以表示成集合内其他元素之和.如集合{1,2,3}中就有一个加等式:3=1+2,而且3=1+2 和3=2+1是 ...