除了最后一题都比较简单就写一起了


P4450-双亲数

题目链接:https://www.luogu.com.cn/problem/P4450

题目大意

给出A,B,dA,B,dA,B,d求有多少对(a,b)(a,b)(a,b)满足gcd(a,b)=dgcd(a,b)=dgcd(a,b)=d且a∈[1,A],b∈[1,B]a\in[1,A],b\in[1,B]a∈[1,A],b∈[1,B]

解题思路

很显然的容斥,枚举ddd的倍数iii,然后容斥系数就是μ(id)\mu(\frac{i}{d})μ(di​)。
时间复杂度O(n)O(n)O(n)

code

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=1e6+10;
int A,B,d,mu[N],pri[N],cnt;
long long ans;
bool v[N];
int main()
{scanf("%d%d%d",&A,&B,&d);mu[1]=1;for(int i=2;i<N;i++){if(!v[i])pri[++cnt]=i,mu[i]=-1;for(int j=1;j<=cnt&&i*pri[j]<N;j++){v[i*pri[j]]=1;if(i%pri[j]==0)break;mu[i*pri[j]]=-mu[i];}}if(A>B)swap(A,B);for(int i=d;i<=A;i+=d)ans+=1ll*(A/i)*(B/i)*mu[i/d];printf("%lld\n",ans);
}

P5221-Product

题目链接:https://www.luogu.com.cn/problem/P5221

题目大意

给出nnn求
∏i=1n∏j=1nlcm(i,j)gcd(i,j)\prod_{i=1}^n\prod_{j=1}^n\frac{lcm(i,j)}{gcd(i,j)}i=1∏n​j=1∏n​gcd(i,j)lcm(i,j)​

解题思路

CYJian\text{CYJian}CYJian的题啊,时限0.2s?0.2s?0.2s?不过只是看起来花里胡哨,没有其他CYJian\text{CYJian}CYJian的题那么难。

先简单把lcmlcmlcm拆出来化一下式子
(∏i=1n∏j=1ni×j)1(∏i=1n∏j=1ngcd(i,j))2\left(\prod_{i=1}^n\prod_{j=1}^ni\times j\right)\frac{1}{\left(\prod_{i=1}^{n}\prod_{j=1}^ngcd(i,j)\right)^2}(i=1∏n​j=1∏n​i×j)(∏i=1n​∏j=1n​gcd(i,j))21​

左边那个很容易求就是(n!)2n(n!)^{2n}(n!)2n,右边那个因为是乘积所以很好做,直接枚举质数幂ded^ede,让有⌊nde⌋2\lfloor\frac{n}{d^e}\rfloor^2⌊den​⌋2对数的gcdgcdgcd包含ded^ede,会产生这么多的贡献,但是因为在de−1d^{e-1}de−1的时候也统计过一次,所以只需要产生ddd的贡献就好了。

时间复杂度O(nlog⁡n)O(n\log n)O(nlogn)

code

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const ll N=1e6+10,P=104857601;
ll n,ans,cnt,pri[N];
bool v[N];
ll power(ll x,ll b){ll ans=1;while(b){if(b&1)ans=ans*x%P;x=x*x%P;b>>=1;}return ans;
}
signed main()
{scanf("%lld",&n);ans=1;for(ll i=2;i<=n;i++){if(!v[i]){for(ll j=i;j<=n;j=j*i)ans=ans*power(i,(n/j)*(n/j)%(P-1))%P;pri[++cnt]=i;}for(ll j=1;j<=cnt&&i*pri[j]<=n;j++){v[i*pri[j]]=1;if(i%pri[j]==0)break;}}ans=power(ans*ans%P,P-2);ll f=1;for(ll i=1;i<=n;i++)f=f*i%P;f=power(f,2*n);ans=ans*f%P;printf("%lld",ans);return 0;
}

P6055-[RC-02]GCD

题目链接:https://www.luogu.com.cn/problem/P6055

题目大意

给出nnn求
∑i=1n∑j=1n∑p=1⌊nj⌋∑q=1⌊nj⌋[gcd(i,j)=1][gcd(p,q)=1]\sum_{i=1}^n\sum_{j=1}^n\sum_{p=1}^{\lfloor\frac{n}{j}\rfloor}\sum_{q=1}^{\lfloor\frac{n}{j}\rfloor}[gcd(i,j)=1][gcd(p,q)=1]i=1∑n​j=1∑n​p=1∑⌊jn​⌋​q=1∑⌊jn​⌋​[gcd(i,j)=1][gcd(p,q)=1]

解题思路

刚开始还以为可以直接暴力整除分块+杜教筛欧拉函数然后O(n34)O(n^{\frac{3}{4}})O(n43​)搞,然后发现时限是1s1s1s。

发现这个式子的顺序很奇怪,特意的把jjj放在了里面。这个提示我们jjj其实是在枚举ppp和qqq的gcdgcdgcd。
而又jjj和iii互质,其实这个式子的真正目的是对于每个iii求有多少对数的gcdgcdgcd和iii互质然后求和。换成式子就是
∑i=1n∑q=1n∑p=1n[gcd(gcd(q,p),i)=1]\sum_{i=1}^n\sum_{q=1}^n\sum_{p=1}^n[gcd(gcd(q,p),i)=1]i=1∑n​q=1∑n​p=1∑n​[gcd(gcd(q,p),i)=1]
就是三对数之间互质的对数,之间上莫反就可以了
∑i=1n⌊ni⌋3μ(i)\sum_{i=1}^n\lfloor\frac{n}{i}\rfloor^3\mu(i)i=1∑n​⌊in​⌋3μ(i)
nnn比较大,要用杜教筛筛一下mumumu

时间复杂度O(n23)O(n^{\frac{2}{3}})O(n32​)?


code

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<map>
#define ll long long
using namespace std;
const ll N=1e7+10,P=998244353;
ll n,cnt,pri[N],mu[N],ans;
map<ll,ll> mp;
bool v[N];
ll get_sum(ll n){if(mp.find(n)!=mp.end())return mp[n];if(n<N)return mu[n];ll rest=1;for(ll l=2,r;l<=n;l=r+1)r=n/(n/l),(rest+=P-(r-l+1)*get_sum(n/l))%=P;return mp[n]=rest;
}
signed main()
{scanf("%lld",&n);mu[1]=1;for(ll i=2;i<N;i++){if(!v[i])pri[++cnt]=i,mu[i]=-1;for(ll j=1;j<=cnt&&i*pri[j]<N;j++){v[i*pri[j]]=1;if(i%pri[j]==0)break;mu[i*pri[j]]=-mu[i];}}for(ll i=1;i<N;i++)(mu[i]+=mu[i-1])%=P;for(ll l=1,r;l<=n;l=r+1){r=n/(n/l);ll p=n/l;p=p*p%P*p%P;(ans+=p*(get_sum(r)-get_sum(l-1))%P)%=P;}printf("%lld\n",(ans+P)%P);return 0;
}

P4450-双亲数,P5221-Product,P6055-[RC-02]GCD【莫比乌斯反演,杜教筛】相关推荐

  1. 51nod1220-约数之和【莫比乌斯反演,杜教筛】

    正题 题目链接:http://www.51nod.com/Challenge/Problem.html#problemId=1220 题目大意 给出nnn,求∑i=1n∑j=1nσ(i∗j)\sum_ ...

  2. B. Product(2019ICPC西安邀请赛)(杜教筛)

    Product ∑i=1n∑j=1n∑k=1ngcd⁡(i,j)[k∣gcd⁡(i,j)]∑k=1n∑i=1nk∑j=1nkgcd⁡(ik,jk)∑k=1nk∑i=1nk∑j=1nkgcd⁡(i,j) ...

  3. Luogu P6055 [RC-02] GCD(莫比乌斯反演,杜教筛)(这题乐死我了,真就图一乐呗)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Weblink https://www.luogu.com.cn/problem/P6055 Prob ...

  4. [CQOI2015]选数(杜教筛)

    [CQOI2015]选数 推式子 根据题意可写出式子: ∑a1=LH∑a2=LH⋯∑an=LH[gcd(a1,a2-an)=k]∑a1=⌈Lk⌉⌊Hk⌋∑a2=⌈Lk⌉⌊Hk⌋⋯∑an=⌈Lk⌉⌊Hk ...

  5. 51nod 1847 奇怪的数学题(数论/min25筛/杜教筛/斯特林数)

    51nod 1847 奇怪的数学题 求解∑i=1n∑j=1nsgcd(i,j),sgcd\sum_{i=1}^n\sum_{j=1}^nsgcd(i,j),sgcd∑i=1n​∑j=1n​sgcd(i ...

  6. [CQOI2015]选数(数论分块+杜教筛)

    problem 洛谷链接 solution 将 L,HL,HL,H 的范围放缩 1K\frac 1 KK1​,都除掉 KKK,特殊的 LLL 边界注意一下. H←H/K,L←(L−1)/K+1H\le ...

  7. 【数论】【杜教筛】选数(P3172)

    正题 P3172 题目大意 在 [L,R] 选n个数,问gcd=k的方案数 解题思路 因为gcd=k,那么所选的数都是k的倍数,那么可以让L,R整除k,那么有 ∑a1=LR∑a2=LR...∑an=L ...

  8. [51NOD1847]奇怪的数学题(杜教筛+min_25筛+第二类斯特林数)

    f(x)f(x)f(x)表示xxx的次大约数,有f(x)=xx的最小质因数f(x)=\frac{x}{x的最小质因数}f(x)=x的最小质因数x​,那么 ∑i=1n∑j=1nsgcd(i,j)k=∑i ...

  9. 数论题中(杜教筛)交换求和符号

    文章目录 方阵 下三角 约数倍数 狄利克雷卷积 以及 杜教筛学习笔记 突然对交换求和符号有了新的理解了,用矩阵转置的思路就很好理解,外层循环相当于枚举行,内层枚举列,交换次序就是先枚举列,再枚举行 方 ...

最新文章

  1. Assembly--及相关内容
  2. 【Android 应用开发】Canvas 精准绘制文字 ( 文本边界坐标解析 | 绘图位置 )
  3. 136.二层交换机是哪一层的设备,与三层交换机之间的区别?
  4. IE8 能否再创辉煌?
  5. 浮点类型误区 “!=”
  6. 聊一下C#开发者如何过渡到JAVA 开发者
  7. [转] oracle 数据库 SQL plus 连接方法
  8. 系统学习数字图像处理之描绘子
  9. 吾智商低,对于VS的char实在是不知所云
  10. php抓取数据去除空格,php读取文本去除空格
  11. html表格打印自动换行,html 表格自动换行问题
  12. 各代iphone尺寸_iPhone12系列尺寸对比-历代iPhone机型尺寸比较
  13. 【Windows】windows生成rsa密钥对
  14. 个性化茅台之中国酒韵·十大人物
  15. android解决方法数超过65536问题,(满则溢)Android AS打包提示方法数超65536的解决方法...
  16. 格兰杰因果( Granger causality test)在神经科学中脑区功能连接上的应用
  17. 使用阿里云视频点播上传视频
  18. mcnpf5输出结果_MCNP学习笔记-计数卡F6
  19. Unity 如何实现一个强大的MMO技能系统!
  20. spark任务一直卡住,问题分析、解决

热门文章

  1. 小米8ios图标包下载_小米互传PC端抢先下载,免流量、高速互传,支持多设备共享...
  2. opentrace在mysql中使用_采用OpenReplicator解析MySQL binlog
  3. php 获取对象所有成员变量,PHP成员变量获取对比
  4. 获取父线程 java_java子线程中获取父线程的threadLocal中的值
  5. 移动端h5唤起键盘_移动端H5界面打开后,如何自动调用软键盘
  6. sqlsession.selectlist 会返回null么_StackOverflow经典问题:代码中如何去掉烦人的“!=nullquot;判空语句...
  7. org.apache.ibatis.executor.ExecutorException: A query was run and no Result Maps were found for the
  8. 7-2 一元多项式的乘法与加法运算 (20 分)(思路加详解+map做法)map真香啊 各个测试点的用例子 来吧宝贝!
  9. 《C++ Primer》7.1.2节练习(部分)
  10. [蓝桥杯2016决赛]阶乘位数-数论