BZOJ 2694: Lcm [莫比乌斯反演 线性筛]
题意:求\(\sum\limits_{i=1}^n \sum\limits_{j=1}^m lcm(i,j)\ : gcd(i,j) 是sf 无平方因子数\)
无平方因子数?搞一个\(\mu(gcd(i,j))\)不就行了..不对不对有正负,是\(\mu^2\)才行
套路推♂倒 (ノ*・ω・)ノ
\sum\limits_{i=1}^n \sum\limits_{j=1}^m \frac{ij}{gcd(i,j)} \mu(gcd(i,j))^2
&=\sum_{d=1}^n d\ \mu(d^2) \sum_{i=1}^{\frac{n}{d}} \sum_{j=1}^{\frac{m}{d}}ij[gcd(i,j)=1]\\
&= \sum_{D=1}^n D\sum_{d|D} \mu(d)^2 \mu(\frac{D}{d})\frac{D}{d} \ f(\frac{n}{D}, \frac{m}{D}) \\
\end{align*}
\]
woc那是个smg,自己卷自己? $g(i) = i \cdot ((\mu \cdot \mu) * (\mu \cdot id))(i) $
如果我没猜错,点乘和卷积没有什么律吧
\(g(1) = 1\)
\(g(p) = p*(1-p)\)
观察那堆\(\mu\),分成的两个因子都有的话,相同的质数必须一边一个啊要不就是0没贡献了
考虑\(p \mid i\),\(i\)中还至少有一个\(p\),我们记录最小质因子的次数判断一下\(ip\)的质因子多于2个\(g(ip)=0\)了,正好两个的话肯定是一面一个,结果就是\(g(\frac{i}{p})*(-p)\)啊...不对不对,前面的\(i\)让你吃了?应该是\(*(-p\cdot p^2)\)
貌似还有更科学的想法,i除掉p后两个就互质了...
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
using namespace std;
const int N=4e6+5, INF=1e9, P = 1<<30;
#define pii pair<int, int>
#define MP make_pair
#define fir first
#define sec second
typedef long long ll;
inline int read(){
char c=getchar();int x=0,f=1;
while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}
return x*f;
}
int n, m;
int notp[N], p[N], cp[N]; ll g[N];
void sieve(int n) {
g[1] = 1;
for(int i=2; i<=n; i++) {
if(!notp[i]) p[++p[0]] = i, g[i] = i*(1-i), cp[i] = 1;
for(int j=1; j<=p[0] && i*p[j]<=n; j++) {
int t = i*p[j];
notp[t] = 1;
if(i%p[j] == 0) {
cp[t] = cp[i]+1;
if(cp[t] <= 2) g[t] = g[i/p[j]] * (-p[j] * p[j] * p[j]) %P;
else g[t] = 0;
break;
}
cp[t] = 1;
g[t] = g[i] * g[p[j]];
}
}
for(int i=1; i<=n; i++) (g[i] += g[i-1]) %=P;
}
inline ll f(ll n, ll m) {return ( n*(n+1)/2 %P) * ( m*(m+1)/2 %P)%P;}
ll cal(int n, int m) {
ll ans=0; int r;
for(int i=1; i<=n; i=r+1) {
r = min(n/(n/i), m/(m/i));
( ans += (g[r] - g[i-1]) * f(n/i, m/i) )%=P;
}
return (ans+P)%P;
}
int main() {
//freopen("in","r",stdin);
sieve(N-1);
int T=read();
while(T--) {
n=read(); m=read();
if(n>m) swap(n, m);
printf("%lld\n", cal(n, m));
}
}
BZOJ 2694: Lcm [莫比乌斯反演 线性筛]的更多相关文章
- 【bzoj2694】Lcm 莫比乌斯反演+线性筛
题目描述 求$\sum\limits_{i=1}^n\sum\limits_{j=1}^m|\mu(gcd(i,j))|lcm(i,j)$,即$gcd(i,j)$不存在平方因子的$lcm(i,j)$之 ...
- BZOJ 2694: Lcm 莫比乌斯反演 + 积性函数 + 线性筛 + 卡常
求 $\sum_{i=1}^{n}\sum_{j=1}^{m}lcm(i,j)\mu(gcd(i,j))^2$ $\Rightarrow \sum_{d=1}^{n}\mu(d)^2\sum_{i ...
- BZOJ 2693: jzptab [莫比乌斯反演 线性筛]
2693: jzptab Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1194 Solved: 455[Submit][Status][Discu ...
- [bzoj] 2694 Lcm || 莫比乌斯反演
原题 定义整数a,b,求所有满足条件的lcm(a,b)的和: 1<=a<=A 1<=b<=B ∀n>1,n2†gcd(a,b)(即任意n>1,\(n^2\)不是gc ...
- 【bzoj2693】jzptab 莫比乌斯反演+线性筛
题目描述 输入 一个正整数T表示数据组数 接下来T行 每行两个正整数 表示N.M 输出 T行 每行一个整数 表示第i组数据的结果 样例输入 1 4 5 样例输出 122 题解 莫比乌斯反演+线性筛 由 ...
- 【bzoj4407】于神之怒加强版 莫比乌斯反演+线性筛
题目描述 给下N,M,K.求 输入 输入有多组数据,输入数据的第一行两个正整数T,K,代表有T组数据,K的意义如上所示,下面第二行到第T+1行,每行为两个正整数N,M,其意义如上式所示. 输出 如题 ...
- bzoj 2820 YY的GCD - 莫比乌斯反演 - 线性筛
Description 神犇YY虐完数论后给傻×kAc出了一题给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y)有多少对kAc这种 傻×必 ...
- bzoj 4407: 于神之怒加强版【莫比乌斯反演+线性筛】
看着就像反演,所以先推式子(默认n<m): \[ \sum_{d=1}^{n}d^k\sum_{i=1}^n\sum_{j=1}^m[gcd(i,j)==d] \] \[ =\sum_{d=1} ...
- 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| ...
随机推荐
- 2017广东工业大学程序设竞赛E题(倒水)
Description 一天,CC买了N个容量可以认为是无限大的瓶子,开始时每个瓶子里有1升水.接着~~CC发现瓶子实在太多了,于是他决定保留不超过K个瓶子.每次他选择两个当前含水量相同的瓶子,把一个 ...
- Ping pong(树状数组求序列中比某个位置上的数小的数字个数)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2492 Ping pong Time Limit: 2000/1000 MS (Java/Others) ...
- c语言基础学习02
=============================================================================涉及到的知识点有:include有两种用法.{ ...
- c语言函数实参与形参整理
- 面试-java算法题
1.编写一个程序,输入n,求n!(用递归的方式实现). public static long fac(int n){ if(n<=0) return 0; else if(n==1) retur ...
- 基于 fireasy 构建的 asp.net core 示例
最近花时间弄了一个关于fireasy使用的demo,已放到 github 上供大家研究,https://github.com/faib920/zero 该 demo 演示了如何使用 fireasy 创 ...
- Laravel 验证中文本地化
1.使用bootsrap好看的提示样式 但是会提示英文 2.将提示中文本地化 2.1.在/resouce/lang下创建文件夹:zh 2.2.已经有小伙伴做好了翻译 https://gist.gith ...
- Tp框架查询分页显示与全部查询出来显示运行时间快慢有区别吗?
8:08:01 青春阳光 2017/4/7 8:08:01 大神在吗? Tp框架查询分页显示与全部查询出来显示运行时间快慢有区别吗? 青春阳光 2017/4/7 8:08:20 还有个问题,上传到pu ...
- 如何在Chrome下使用Postman进行rest请求测试
在web和移动端开发时,常常会调用服务器端的restful接口进行数据请求,为了调试,一般会先用工具进行测试,通过测试后才开始在开发中使用.这里介绍一下如何在chrome浏览器利用postman应用进 ...
- 本地访问服务器上的wamp
一,httpd-vhosts.conf文件 # Virtual Hosts # ServerName localhost DocumentRoot D:/wamp/ ...