DZY LOVES MATH (莫比乌斯反演)
OK!开始更新莫比乌斯反演
先看了一下数据范围,嗯,根据\(jiry\)老师的真言,我们一定是可以筛一遍然后用根号或者是\(log\)的算法。
题目思路挺简单,就是把原始的式子化成:
\(\sum_{k = 1}^{min(a,b)}(a/k)(b/k) \sum_{d | k} f(d) * \mu (k / d)\)
由于莫反的函数是建立在积性上的,但是后面那个显然不是积性。
我们考虑把后面的式子代换一下:\(g(n) = \sum_{d|n}f(n/d) * \mu(d)\)
考虑\(\mu\)这个函数,当\(x > 0\)是1,否则是0.
我们只考虑1的情况,如果是1它就只能是\(d = \prod_{p_i | d} p_i\)
\(k = (d的条件)^r\)时,\(g\)函数不为0.
此时\(g(n) = -\mu(\prod p_i)\)
然后考虑线性筛法求出\(g\)即可。
#include <bits/stdc++.h>
using namespace std;
#define ll long long
inline int read () {
int q=0,f=1;char ch = getchar();
while(!isdigit(ch)){
if(ch=='-')f=-1;ch=getchar();
}
while(isdigit(ch)){
q=q*10+ch-'0';ch=getchar();
}
return q*f;
}
ll ans;
const int maxn = 10000008;
int prime[maxn];
bool is_prime[maxn];
int cnt;
int miu[maxn];
inline void init () {
cnt = 0;
memset(prime,0,sizeof(prime));
memset(is_prime,0,sizeof(is_prime));
miu[1] = 1;
for(int i = 2;i < maxn; ++i) {
if(!is_prime[i]) {
prime[++cnt] = i;
miu[i] = -1;
}
for(int j = 1;j <= cnt; ++j) {
if(i * prime[j] >= maxn) {
break;
}
else {
is_prime[i * prime[j]] = 1;
if(i % prime[j]) {
miu[i * prime[j]] = -miu[i];
}
else {
miu[i * prime[j]] = 0;
break;
}
}
}
}
// cout<<1<<endl;
}
int g[maxn];
inline void calc () {
init();
g[0] = g[1] = 0;
for(ll i = 2;i < maxn; ++i) {
if(miu[i]) {
for(ll j = i;j < maxn; j *= i) {
g[j] = -miu[i];
}
}
}
for(ll i = 2;i < maxn; ++i) {
g[i] += g[i - 1];
}
// cout<<1<<endl;
}
int T;
int main () {
calc();
T = read();
while(T--) {
int n = read(),m = read();
if(n > m) swap(n,m);
ans = 0;
for(int i = 1,j;i <= n;i = j + 1) {
j = min(n / (n / i),m / (m / i));
ans += (ll)(n / i) * (m / i) * ( g[j] - g[i - 1] );
}
printf("%lld\n",ans);
}
return 0;
}
DZY LOVES MATH (莫比乌斯反演)的更多相关文章
- 【BZOJ】3309: DZY Loves Math 莫比乌斯反演优化
3309: DZY Loves Math Description 对于正整数n,定义f(n)为n所含质因子的最大幂指数.例如f(1960)=f(2^3 * 5^1 * 7^2)=3, f(10007) ...
- bzoj 3309 DZY Loves Math 莫比乌斯反演
DZY Loves Math Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 1303 Solved: 819[Submit][Status][Dis ...
- 【BZOJ3309】DZY Loves Math 莫比乌斯反演+线性筛(好题)
[BZOJ3309]DZY Loves Math Description 对于正整数n,定义f(n)为n所含质因子的最大幂指数.例如f(1960)=f(2^3 * 5^1 * 7^2)=3, f(10 ...
- 【BZOJ3309】DZY Loves Math - 莫比乌斯反演
题意: 对于正整数n,定义$f(n)$为$n$所含质因子的最大幂指数.例如$f(1960)=f(2^3 * 5^1 * 7^2)=3$,$f(10007)=1$,$f(1)=0$. 给定正整数$a,b ...
- 【bzoj3309】DZY Loves Math 莫比乌斯反演+线性筛
Description 对于正整数n,定义f(n)为n所含质因子的最大幂指数.例如f(1960)=f(2^3 * 5^1 * 7^2)=3, f(10007)=1, f(1)=0. 给定正整数a,b, ...
- BZOJ 3309 DZY Loves Math ——莫比乌斯反演
枚举$d=gcd(i,j)$ 然后大力反演 ——来自Popoqqq的博客. 然后大力讨论后面的函数的意义即可. http://blog.csdn.net/popoqqq/article/details ...
- BZOJ 3309: DZY Loves Math [莫比乌斯反演 线性筛]
题意:\(f(n)\)为n的质因子分解中的最大幂指数,求\(\sum_{i=1}^n \sum_{j=1}^m f(gcd(i,j))\) 套路推♂倒 \[ \sum_{D=1}^n \sum_{d| ...
- [BZOJ3309]DZY Loves Math(莫比乌斯反演+线性筛)
$\sum\limits_{T=1}^{n}\lfloor\frac{n}{T}\rfloor\lfloor\frac{m}{T}\rfloor\sum\limits_{d|T}f(d)\mu(\fr ...
- bzoj 3309 DZY Loves Math —— 莫比乌斯反演+数论分块
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3309 凭着上课所讲和与 Narh 讨论推出式子来: 竟然是第一次写数论分块!所以迷惑了半天: ...
- BZOJ 3309: DZY Loves Math 莫比乌斯反演+打表
有一个神奇的技巧——打表 code: #include <bits/stdc++.h> #define N 10000007 #define ll long long #define se ...
随机推荐
- luoguP2709 小B的询问 [莫队]
题目描述 小B有一个序列,包含N个1~K之间的整数.他一共有M个询问,每个询问给定一个区间[L..R],求Sigma(c(i)^2)的值,其中i的值从1到K,其中c(i)表示数字i在[L..R]中的重 ...
- 【dart学习】-- Dart之类和对象
一,概述 类(Class)是面向对象程序设计,实现信息封装的基础.类是一种用户定义的类型.每个类包含数据说明和一组操作数据或传递消息的函数.类的实例称为对象. Dart的类与其它语言都有很大的区别,比 ...
- Android中ViewPgae中的Fragment如何确认当前页面可见的问题
由于在ViewPage中PageAdapter来管理所有的Fragment.在加载一个Fragment的时候,会自动缓存左右几个(默认是一个)页面,此时也会调用到正常的生命周期函数,onCreate, ...
- WdatePicker.js的使用方法 帮助文档 (日历控件)
WdatePicker配置和功能 一.配置 日期范围限制 静态限制 注意:日期格式必须与 realDateFmt 和 realTimeFmt 一致 你可以给通过配置minDate(最小日期),maxD ...
- PHP中文无乱码截取
正在上传文件反正无聊 就把php无乱码截取写出来吧` 参数说明 gbk 字符编码中,存储中文字符要2个字节 uft-8 字符编码中,存储中文字符要3个字节 0xa0 半个汉字 ord()— ...
- winform界面设计
http://www.cnblogs.com/wuhuacong/ 这位大师给了我指导方向 http://officeribbon.codeplex.com 提供了ribbon界面的控件 动态web ...
- python去除rpm仓库中同名低版本的包
编程思路1 遍历目标路径的rpm包并保存特性包列表: 2 利用python模块rpmUtils提取RPM包的特征信息:包名 版本号 架构 3 遍历特性列表中存在重复包名的rpm, 将低版本的rpm包 ...
- 关于kettle
1.点spoon.bat无报错也不运行 可以运行一下spoonDebug.bat 查看一下spoondebug.txt日志 我遇到这个问题时 是给他分配的内存太多了 我的电脑只有2g 给果他给分了20 ...
- vim - Vi IMproved, 一个程序员的文本编辑器
总览 (SYNOPSIS) vim [options] [file ..] vim [options] - vim [options] -t tag vim [options] -q [errorfi ...
- uname - 显示输出系统信息
总览 uname [OPTION]... 描述 显示相应的系统信息. 没有指定选项时,同 -s. -a, --all 显示所有的信息 -m, --machine 显示机器(硬件)类型 -n, --no ...