当前位置: 首页 > news >正文

2026.3.16 - 2026.3.22 做题题解

CF2045K GCDDCG

首先我们发现我们需要求出每个 \(i\) 的答案,考虑莫反,枚举第一组的 gcd 是 \(x\) 的倍数第二组的是 \(y\) 的倍数,设 \(b_x\) 表示 \(a\)\(x\) 的倍数的个数。

假设我们不考虑空集的情况,因为那部分平凡,那么式子就是:

\[\sum\limits_{i\mid x} \sum\limits_{i\mid y} \mu\Big(\frac{x}{i}\Big) \times \mu\Big(\frac{y}{i}\Big) \times 2^{b_x - b_{[x,y]}} \times 2^{b_y - b_{[x,y]}} \times 3^{b_{[x,y]}} = \sum\limits_{i\mid x} \sum\limits_{i\mid y} \mu\Big(\frac{x}{i}\Big) \times \mu\Big(\frac{y}{i}\Big) \times 2^{b_x} \times 2^{b_y} \times {\Big (\frac{3}{4} \Big )}^{b_{[x,y]}} \]

直接做会超时,考虑优化这个东西。

我们发现难点在于 \([x,y]\),我们发现这个东西是 \(n^2\) 量级的,但是所有 \([x,y]>n\) 只会造成 \(1\) 的贡献,我们可以整体提出来这样我们就把值域缩成了 \(n\) 的量级。

注意到如果我们枚举 \([x,y]\),那么我们这个东西实际上就是干一个 lcm 卷积。

\[h(n)=\sum_{[x,y]=n} f(x)g(y) \]

\(H(n) = \sum\limits_{d\mid n} h(d)\)\(F(n),G(n)\) 同理。

那么我们发现 \(F(n)G(n) = (\sum\limits_{x\mid n} f(x))(\sum\limits_{y\mid n} g(y)) = \sum\limits_{[x,y]\mid n} f(x)g(y) = H(n)\),这就是个点值乘法,最后我们莫反得到 \(h\) 即可,模拟上述过程复杂度 \(O(n\ln^2 n)\)

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=2e5+10,mod=998244353;
int a[N],n,b[N],mp[N],mu[N],vis[N],pr[N],cnt,f[N],h[N],pw[N];
inline int read(){char c=getchar();int ans=0,f=1;while(c<48||c>57) (c==45?f=-1:1),c=getchar();while(c>=48&&c<=57) ans=(ans<<1)+(ans<<3)+(c^48),c=getchar();return ans*f;
}
inline void add(int &x,int y){x=(x+y)%mod;}
inline int qpow(int a,int b){int s=1;while(b){(b&1)?s=s*a%mod:1,a=a*a%mod,b>>=1;}return s;}
void exgcd(int a,int b,int &x,int &y){if (b==0) x=1,y=0;else exgcd(b,a%b,y,x),y-=a/b*x%mod;}
inline int inv(int a){int x,y;exgcd(a,mod,x,y);return (x%mod+mod)%mod;}
inline void init(int n){mu[1]=1;for (int i=2;i<=n;i++){if (!vis[i]) pr[++cnt]=i,mu[i]=-1;for (int j=1;i*pr[j]<=n;j++){vis[i*pr[j]]=1;if (i%pr[j]==0) break;mu[i*pr[j]]=-mu[i];}}for (int i=1;i<=n;i++) mu[i]=(mu[i]+mod)%mod;
}
main(){n=read();init(n);for (int i=1;i<=n;i++) mp[a[i]=read()]++;pw[0]=1;for (int i=1;i<=n;i++) pw[i]=pw[i-1]*2%mod;for (int i=1;i<=n;i++) for (int j=i;j<=n;j+=i) b[i]+=mp[j];int ans=0;for (int i=1;i<=n;i++){int sum=0,sum1=0,sum2=0;for (int x=i;x<=n;x+=i) add(sum1,pw[b[x]]*mu[x/i]%mod),add(sum2,mu[x/i]);for (int x=i;x<=n;x+=i) add(sum,mu[x/i]*(mod+pw[b[x]]-1)%mod*sum2%mod+mu[x/i]*sum1%mod);add(ans,mod-i*sum%mod+i*sum1%mod*sum1%mod);for (int x=i;x<=n;x+=i) for (int y=x;y<=n;y+=x) add(f[y],mu[x/i]*pw[b[x]]%mod);for (int x=i;x<=n;x+=i) f[x]=f[x]*f[x]%mod;for (int x=i;x<=n;x+=i) for (int y=x;y<=n;y+=x) add(h[y],mu[y/x]*f[x]%mod);for (int x=i;x<=n;x+=i) add(ans,i*h[x]%mod*(qpow(3*inv(4)%mod,b[x])-1+mod)%mod),f[x]=h[x]=0;}	cout <<ans<<endl;return 0;
}
http://www.jsqmd.com/news/492770/

相关文章:

  • 天地图森林数据优化指南:如何用QGIS去除零碎多边形和平滑边界?
  • ABAP Function ALV隐藏技巧:用自定义按钮实现采购订单调拨功能
  • USRP设备选型指南:为什么你的MATLAB总是检测不到B210/N310?(含UHD驱动优化方案)
  • 反思
  • cv_unet_image-colorization环境配置避坑指南:Anaconda虚拟环境搭建
  • 2026年3月河南中央空调安装与净化工程安装厂家哪家好?锋锐专注净化工程安装,商用中央空调安装一站式服务指南 - 海棠依旧大
  • 2026年3月山东混凝土成型机械推荐:水渠/渠道/农田灌溉渠/沟渠/成型机、履带/路沿石/路肩/防撞墙/一体浇筑/路面摊铺/滑模机厂家选择指南 - 海棠依旧大
  • Qwen3-14b_int4_awq惊艳效果:中文古籍断句标点、白话翻译生成展示
  • 零下80℃的物联网设备耐力:软件测试视角下的极寒挑战与解决方案
  • 极速畅享:百度网盘直连解析工具助力高效数据传输
  • 2026年天津装修厂家哪家好?天津二手房装修、别墅装修、办公室装修、店铺装修、公寓装修、出租房装修、婚房装修厂家选择指南,艺禾装饰(天津)有限公司品类齐全+服务贴心 - 海棠依旧大
  • SmolVLA企业内网部署方案:结合内网穿透技术实现安全访问
  • 2026年3月北京空压机服务商哪家好?空压机维修/保养、阿特拉斯空压机、博莱特空压机、变频空压机、富达空压机、空压机机头、空压机租赁厂家选择指南 - 海棠依旧大
  • GLM-4.7-Flash流式输出体验:实时对话无卡顿,响应速度实测
  • FLUX.2图片转换工具快速指南:从环境搭建到实际应用
  • Agentic AI用户体验设计:提示工程架构师如何提升智能体交互友好性
  • GPEN在口罩时期的价值:戴口罩照片的面部推测修复
  • 高效配置VSCode+LeetCode插件,解锁流畅刷题体验
  • 百度网盘直连解析工具:突破限速的技术实践指南
  • 逆向工程师的噩梦:手把手教你用OLLVM+NDK打造高混淆so库(含IDA对比分析)
  • Task04:DDPG与TD3算法在连续控制任务中的实战对比
  • AT24C02 EEPROM I2C驱动移植与读写实战:基于TI C2000 TMS320F28P550开发板
  • 便携式锂电焊台与60W双向PD快充融合设计
  • 突破数字封锁:baidu-wangpan-parse的技术突围战
  • VS Code 通义灵码实战:从安装到智能编码全流程解析
  • Hunyuan-MT-7B保姆级部署指南:单卡RTX 4080也能跑的高质量翻译
  • 从SQL到向量搜索:用pgvector改造现有PostgreSQL业务的避坑指南
  • 2026年去AI味提示词Kimi豆包元宝通用?不如直接用降AI工具 - 还在做实验的师兄
  • NVIDIA Profile Inspector显卡驱动深度配置指南:从问题诊断到性能优化
  • Qwen Pixel Art应用场景:独立开发者打造像素风APP图标与启动页素材