题目

\[\large\prod_{i_1=1}^n\prod_{i_2=1}^n\dots\prod_{i_k=1}^n\frac{i_1*i_2*\dots*i_k}{gcd(i_1,i_2,\dots,i_k)}\pmod {998244353}
\]

分析

考虑分子分母分别处理,首先看分子,设

\[\large f[k]=\prod_{i_1=1}^n\prod_{i_2=1}^n\dots\prod_{i_k=1}^n i_1*i_2*\dots*i_k
\]

那么\(f[k]=(n!)^{n^{k-1}}f[k-1]^n\),其中\(f[0]=1\)

设\(f_n[k]\)表示\(f[k]\)中\(n!\)的次数,那么

\(f_n[k]=n^{k-1}+n*f_n[k-1]\),其中\(f_n[0]=0\)

可以找规律发现\(f_n[k]=kn^{k-1}\)

那么

\[f[k]=(n!)^{kn^{k-1}}
\]

这就是分子

分母就是

\[\large\prod_{i_1=1}^n\prod_{i_2=1}^n\dots\prod_{i_k=1}^n gcd(i_1,i_2,\dots,i_k)
\]

如果硬套性质很难做,考虑枚举约数计算这个约数出现了多少次,那也就是

\[\large \prod_{d=1}^n d^{\sum_{i_1=1}^{\lfloor\frac{n}{d}\rfloor}\sum_{i_2=1}^{\lfloor\frac{n}{d}\rfloor}\dots \sum_{i_k=1}^{\lfloor\frac{n}{d}\rfloor}[gcd(i_1,i_2,\dots i_k)==d]}
\]

根据莫比乌斯函数的性质化简得到

\[\large \prod_{d=1}^n d^{\sum_{g=1}^\frac{n}{d}\mu(g){\lfloor\frac{n}{dg}\rfloor}^k}
\]

如果直接套用整除分块会TLE,考虑预处理\({\lfloor\frac{n}{dg}\rfloor}^k\)

一定要做到\(O(1)\)查询,这个很简单,直接开个桶完成一次询问后清除标记就可以了

如果用个STL::map的话就会TLE,当然可以套用欧拉定理优化快速幂


代码

#include <cstdio>
#include <cctype>
#include <map>
#define rr register
using namespace std;
const int mod=998244353,phi=998244352,Phi=402653184,P=3001;
const int N=300000; typedef long long lll; lll k; int h[N|31];
int mu[N|31],fac[N|31],inv[N|31],prime[N|31],Cnt,v[N|31],ans,T,n;
inline signed ksm(int x,int y,int p){
rr int ans=1;
for (;y;y>>=1,x=1ll*x*x%p)
if (y&1) ans=1ll*ans*x%p;
return ans;
}
signed main(){
mu[1]=fac[0]=fac[1]=inv[0]=inv[1]=1;
for (rr int i=2;i<=N;++i){
if (!v[i]) prime[++Cnt]=i,mu[i]=-1;
for (rr int j=1;j<=Cnt&&prime[j]<=N/i;++j){
v[i*prime[j]]=1;
if (i%prime[j]==0) break;
mu[i*prime[j]]=-mu[i];
}
}
for (rr int i=2;i<=N;++i) inv[i]=1ll*(mod-mod/i)*inv[mod%i]%mod,mu[i]+=mu[i-1];
for (rr int i=2;i<=N;++i) fac[i]=1ll*fac[i-1]*i%mod,inv[i]=1ll*inv[i-1]*inv[i]%mod;
for (scanf("%d",&T);T;--T){
scanf("%d%lld",&n,&k),ans=1;
rr int f=ksm(fac[n],1ll*k%phi*ksm(n,(k-1)%Phi,phi)%phi,mod);
for (rr int l=1,r,z;l<=n;l=r+1)
z=n/l,r=n/z,h[z]=ksm(z,k%Phi,phi);
for (rr int l=1,r,z,now;l<=n;l=r+1){
z=n/l,r=n/z,now=0;
for (rr int L=1,R,Z;L<=z;L=R+1)
Z=z/L,R=z/Z,now=(now+1ll*(mu[R]-mu[L-1]+phi)*h[Z]%phi)%phi;
ans=1ll*ans*ksm(1ll*fac[r]*inv[l-1]%mod,now,mod)%mod;
}
for (rr int l=1,r,z;l<=n;l=r+1)
z=n/l,r=n/z,h[z]=0;
printf("%lld\n",1ll*f*ksm(ans,mod-2,mod)%mod);
}
return 0;
}

#莫比乌斯反演,整除分块,欧拉定理#U137539 虚伪的最小公倍数的更多相关文章

  1. [P4450] 双亲数 - 莫比乌斯反演,整除分块

    模板题-- \[\sum\limits_{i=1}^a\sum\limits_{j=1}^b[(i,j)=k] = \sum\limits_{i=1}^a\sum\limits_{j=1}^b[k|i ...

  2. Bzoj1101: [POI2007]Zap 莫比乌斯反演+整除分块

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1101 莫比乌斯反演 1101: [POI2007]Zap 设 \(f(i)\) 表示 \(( ...

  3. 莫比乌斯反演&整除分块学习笔记

    整除分块 用于计算$\sum_{i=1}^n f(\lfloor{n/i} \rfloor)*i$之类的函数 整除的话其实很多函数值是一样的,对于每一块一样的商集中处理即可 若一个商的左边界为l,则右 ...

  4. 洛谷 P2257 - YY的GCD(莫比乌斯反演+整除分块)

    题面传送门 题意: 求满足 \(1 \leq x \leq n\),\(1 \leq y \leq m\),\(\gcd(x,y)\) 为质数的数对 \((x,y)\) 的个数. \(T\) 组询问. ...

  5. [POI2007]ZAP-Queries (莫比乌斯反演+整除分块)

    [POI2007]ZAP-Queries \(solution:\) 唉,数论实在有点烂了,昨天还会的,今天就不会了,周末刚证明的,今天全忘了,还不如早点写好题解. 这题首先我们可以列出来答案就是: ...

  6. 洛谷 - P2257 - YY的GCD - 莫比乌斯反演 - 整除分块

    https://www.luogu.org/problemnew/show/P2257 求 \(n,m\) 中 \(gcd(i,j)==p\) 的数对的个数 求 $\sum\limits_p \sum ...

  7. [国家集训队] Crash的数字表格 - 莫比乌斯反演,整除分块

    考虑到\(lcm(i,j)=\frac{ij}{gcd(i,j)}\) \(\sum_{i=1}^n\sum_{j=1}^m\frac{ij}{gcd(i,j)}\) \(\sum_{d=1}^{n} ...

  8. 洛谷 P5518 - [MtOI2019]幽灵乐团 / 莫比乌斯反演基础练习题(莫比乌斯反演+整除分块)

    洛谷题面传送门 一道究极恶心的毒瘤六合一题,式子推了我满满两面 A4 纸-- 首先我们可以将式子拆成: \[ans=\prod\limits_{i=1}^A\prod\limits_{j=1}^B\p ...

  9. P2568 莫比乌斯反演+整除分块

    #include<bits/stdc++.h> #define LL long long using namespace std; ; bool vis[maxn]; int prime[ ...

  10. 洛谷 - UVA11424 - GCD - Extreme (I) - 莫比乌斯反演 - 整除分块

    https://www.luogu.org/problemnew/show/UVA11424 原本以为是一道四倍经验题来的. 因为输入的n很多导致像之前那样 \(O(n)\) 计算变得非常荒谬. 那么 ...

随机推荐

  1. JavaScript的引入并执行-包含动态引入与静态引入

    JavaScript的引入并执行-包含动态引入与静态引入 JavaScript引入方式 html文件需要引入JavaScript代码,才能在页面里使用JavaScript代码. 静态引入 行内式 直接 ...

  2. Acrobat 教程

    https://helpx.adobe.com/cn/acrobat/using/pdf-form-field-properties.html

  3. Qt开发技术:QCharts(四)QChart面积图介绍、Demo以及代码详解

    若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...

  4. AFNetworking整体框架简单整理

    一.AFNetworking整体框架是怎样的 1.UIKit集成模块 UIKit 2.请求序列化 Serialization 3.响应序列化 Serialization 4.会话 NSURLSessi ...

  5. 【Azure Developer】Java代码访问Key Vault Secret时候的认证问题,使用 DefaultAzureCredentialBuilder 或者 ClientSecretCredentialBuilder

    问题描述 使用Java SDK获取Key Vault Secret机密信息时,需要获取授权.通常是使用AAD的注册应用(Client ID, Tenant ID, Client Secret)来获取  ...

  6. 【Azure 应用服务】本地Git部署Java项目到App Server,访问无效的原因

    问题描述 在App Server的部署中心配置好本地Git 仓库 并推送 git push azure master 分支代码到服务器时,并未发生错误 ,但是服务异常,无法访问到正确的项目文件,始终打 ...

  7. 18 Codeforces Round 853 (Div. 2)C. Serval and Toxel's Arrays(算贡献)

    C. Serval and Toxel's Arrays 这种题目做多了应该很容易从贡献的角度去考虑了. 考虑当前版本对答案的贡献,首先这个版本和其他版本取交集至少会包含它本身所以直接先把\(i * ...

  8. 浅谈Zabbix与Prometheus区别

    Zabbix和Prometheus都是非常流行的监控系统.它们有许多相似之处,但也有一些不同之处.以下是Zabbix和Prometheus监控对比的一些关键点: 1.数据模型和查询语言 Prometh ...

  9. 并发操作导致的BUG-解决方案

    一.问题由来 上周五项目发布新版本之后,生产环境一直没有出现什么问题,大家也都开开心心,平平安安的开始新需求的开发. 可是刚稳定运行没几天,负责人突然在群里面发了一个截图,从图片中的信息可以看到,有一 ...

  10. 分支合并规则 dev master v1.0.XX 三条分支的合并原则

    分支合并规则 dev master v1.0.XX 三条分支的合并原则