#莫比乌斯反演,整除分块,欧拉定理#U137539 虚伪的最小公倍数
题目
\]
分析
考虑分子分母分别处理,首先看分子,设
\]
那么\(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}\)
那么
\]
这就是分子
分母就是
\]
如果硬套性质很难做,考虑枚举约数计算这个约数出现了多少次,那也就是
\]
根据莫比乌斯函数的性质化简得到
\]
如果直接套用整除分块会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 虚伪的最小公倍数的更多相关文章
- [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 ...
- Bzoj1101: [POI2007]Zap 莫比乌斯反演+整除分块
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1101 莫比乌斯反演 1101: [POI2007]Zap 设 \(f(i)\) 表示 \(( ...
- 莫比乌斯反演&整除分块学习笔记
整除分块 用于计算$\sum_{i=1}^n f(\lfloor{n/i} \rfloor)*i$之类的函数 整除的话其实很多函数值是一样的,对于每一块一样的商集中处理即可 若一个商的左边界为l,则右 ...
- 洛谷 P2257 - YY的GCD(莫比乌斯反演+整除分块)
题面传送门 题意: 求满足 \(1 \leq x \leq n\),\(1 \leq y \leq m\),\(\gcd(x,y)\) 为质数的数对 \((x,y)\) 的个数. \(T\) 组询问. ...
- [POI2007]ZAP-Queries (莫比乌斯反演+整除分块)
[POI2007]ZAP-Queries \(solution:\) 唉,数论实在有点烂了,昨天还会的,今天就不会了,周末刚证明的,今天全忘了,还不如早点写好题解. 这题首先我们可以列出来答案就是: ...
- 洛谷 - P2257 - YY的GCD - 莫比乌斯反演 - 整除分块
https://www.luogu.org/problemnew/show/P2257 求 \(n,m\) 中 \(gcd(i,j)==p\) 的数对的个数 求 $\sum\limits_p \sum ...
- [国家集训队] 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} ...
- 洛谷 P5518 - [MtOI2019]幽灵乐团 / 莫比乌斯反演基础练习题(莫比乌斯反演+整除分块)
洛谷题面传送门 一道究极恶心的毒瘤六合一题,式子推了我满满两面 A4 纸-- 首先我们可以将式子拆成: \[ans=\prod\limits_{i=1}^A\prod\limits_{j=1}^B\p ...
- P2568 莫比乌斯反演+整除分块
#include<bits/stdc++.h> #define LL long long using namespace std; ; bool vis[maxn]; int prime[ ...
- 洛谷 - UVA11424 - GCD - Extreme (I) - 莫比乌斯反演 - 整除分块
https://www.luogu.org/problemnew/show/UVA11424 原本以为是一道四倍经验题来的. 因为输入的n很多导致像之前那样 \(O(n)\) 计算变得非常荒谬. 那么 ...
随机推荐
- 带你领略下iOS中OC的“alloc”源代码,让你在工作中不在迷惑
前言 前面我们使用官方开源的objc源码进行了编译调试 objc4-818.2源码编译调试笔记 前言为什么会想要调试源码? 苹果开源了部分源码, 但相似内容太多, 基本找不到代码见的对应关系, 如果能 ...
- JAVA对象的生命周期(二)-对象的创建
目录 对象创建的几种方式 类加载检查. 内存分配 初始化零值 设置对象头 执行init方法 对象创建的几种方式 new clone newInstance 反序列化 String s = " ...
- 【Azure 应用服务】App Service for Linux 环境中为Tomcat页面修改默认的Azure 404页面
问题描述 在App Service Linux环境中,如部署Tomcat 应用后,如果访问的页面找不到,应用会返回一个由Azure生成的404页面,那么是否可以修改它呢? PS: 如果是App Ser ...
- 基于 BDD 理论的 Nebula 集成测试框架重构(下篇)
本文首发于 Nebula Graph 公众号 NebulaGraphCommunity,Follow 看大厂图数据库技术实践. 在上篇文章中,我们介绍了 Nebula Graph 的集成测试的演进过程 ...
- Rabbit使用CorrelationId进行可靠性消息回调
先放一张使用CorrelationId相关ID进行消息回调处理的流程图 客户端启动时,它将创建一个匿名回调队列 对于 RPC 请求,客户端发送一条消息,该消息具有两个属性: reply_to(设置为回 ...
- Lua中pair和ipair的区别
Lua中pair和ipair的区别? 二者都是Lua中内置的迭代器,可以对数组或table进行遍历. 在正常的数组或table的遍历中,二者没有区别. tableNormal={"this& ...
- 使用 Abp.Zero 搭建第三方登录模块(四):微信小程序开发
简短回顾一下微信小程序端的流程: 用户通过扫码进入小程序的鉴权页面,更新状态到ACCESSED已扫码 用户点击确认授权,微信通过wx.login()接口获取第三方登录的必要信息:Code登录凭证. ...
- sign 单词学习 - 本质:去分开
sign 英[saɪn],美[saɪn] n. 符号; 指示牌; 手势; 征兆; 正负号; 星座 v. 签名; 签约; 打手语 词源说明(童理民) sign : 来自拉丁语signum,符号,标志,图 ...
- 基于bes2300 的六轴传感器mpu6050调试总结
需求 在医疗健康领域,有很多场景需要分析佩戴者的姿势和动作.mpu6050多轴传感器是一个不二的选择.假如想把功耗做的低一些,放在耳机里,bes2300芯片配合mpu6050是一个不错的选择.遗憾的 ...
- Miracast技术详解(一):Wi-Fi Display
目录 Miracast概述 Miracast Wi-Fi Direct Wi-Fi Display Sink & Source Android上Wi-Fi Direct的实现 Wi-Fi P2 ...