题目

\[\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. 【开发工具】Linux 服务器 Shell 脚本简单入门

    记录一下学习Shell编程的关键知识点,使用最通俗简洁的语句,让阅读者能快速上手Shell脚本的编写 1.什么是Shell? Shell是一种常用于服务器运维的脚本语言.众所周知,脚本语言不需要编译器 ...

  2. 【Azure 应用服务】当在Azure App Service的门户上 Log Stream 日志无输出,需要如何操作让其输出Application Logs呢?

    问题描述 在Azure App Service的门户上 Log Stream 日志无输出,需要如何操作让其输出Application Logs呢? 如下图所示: 问题解答 请注意,上图中提示说:App ...

  3. linux系统信息命令笔记

    1,时间和日期 2,磁盘信息 4,进程概念介绍 4.1,ps 基本命令使用 ps aux 显示内容太多了.一般用ps a 或 ps au 4.2, top命令的基本使用 top 可以动态的显示运行中的 ...

  4. Java 多线程------测试 Thread中的常用方法 + 线程的优先级:

    1 package com.bytezero.threadexer; 2 3 import javax.sound.midi.Soundbank; 4 5 /** 6 * 测试 Thread中的常用方 ...

  5. php的php-fpm

    FastCgi与PHP-fpm到底是个什么样的关系 昨晚有一位某知名在线教育的大佬问了我一个问题,你知道php-fpm和cgi之间的关系吗?作为了一个5年的phper了,这个还不是很简单的问题,然后我 ...

  6. mybaits 笔记2022年8月学习笔记

    mybatis整理 前期准备 安装必要依赖: idea开发mybatis,如果学习测试,可以在一个直接建一个空白项目,如果是用spring boot,则建议用用boot的安装捆绑方式 核 心依赖 or ...

  7. ida使用入门指北

    静态分析 快捷键 操作 作用 空格键 在反汇编窗口中,进行列表视图与图形视图之间的切换 TAB 在反汇编窗口中,进行汇编指令与伪代码之间的切换 Esc 和 Ctrl+Enter 翻页,返回前一页面 G ...

  8. vue入门教程之-插槽

    vue入门教程之-插槽 欢迎关注博主公众号「java大师」, 专注于分享Java领域干货文章, 关注回复「资源」, 免费领取全网最热的Java架构师学习PDF, 转载请注明出处 https://www ...

  9. 2层for循环生成 TreeView

    C# TreeView 利用2层for循环生成,代码如下: //生成树 treeView1.Nodes.Clear(); //封装了数据库查询方法 MyDS_Grid = MyDataClass.ge ...

  10. 菜鸟角度简单分析BP算法(Error Back Propagation)

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明   本文作为本人csdn blog的主站的备份.(Bl ...