GDKOI2023 D1T1
创始人
2025-05-30 10:24:33
0

前言

考场上没想出来,收到来自题目标题的嘲讽

题目大意

求 ∑i=1ni!ik(mod998244353)\sum\limits_{i=1}^n\frac{i!}{i^k}\left(\mod 998244353\right)i=1∑n​iki!​(mod998244353) ,其中 n(1≤2×107),k(1≤k≤2×107)n(1\le 2\times10^7),k(1\le k\le 2\times 10^7)n(1≤2×107),k(1≤k≤2×107) 为输入给出。

解题思路

对于暴力思路,直接爆算即可,时间复杂度为 O((log⁡2k+log⁡2998244353)×n)O\left(\left(\log_2k+\log_2998244353\right)\times n\right)O((log2​k+log2​998244353)×n) 大常数 O(n)O(n)O(n) 但常数太大,过不去。
考虑优化——预处理。我们可以预处理出 1∼n1\sim n1∼n 范围内所有数的 kkk 次方在mod998244353\mod 998244353mod998244353 意义下的逆元,进一步思考,由于 a=b×ca=b\times ca=b×c 则 a−1=b−1×c−1a^{-1}=b^{-1}\times c^{-1}a−1=b−1×c−1,可以使用欧拉筛进行处理。具体地说,就算对于每个质数,可以直接计算其 kkk 次方的逆元:

for(int i=2;i<=n;i++){if(!a[i]){ans[++tot]=i;a[i]=_pow(_pow(i,m),Mod-2);//此处}for(int j=1;j<=tot&&ans[j]*i<=n;j++){a[ans[j]*i]=a[ans[j]]*a[i]%Mod;if(i%ans[j]==0)break;}}

而对于合数,则将其拆成两个数相乘,借此得到其逆元:

for(int i=2;i<=n;i++){if(!a[i]){ans[++tot]=i;a[i]=_pow(_pow(i,m),Mod-2);}for(int j=1;j<=tot&&ans[j]*i<=n;j++){a[ans[j]*i]=a[ans[j]]*a[i]%Mod;//此处if(i%ans[j]==0)break;}}

代码实现

#include
using namespace std;
const long long Mod=998244353;
long long n,m,tot,a[20000010],output,now=1;
int ans[5000010];
long long _pow(long long d,long long z)
{long long ans=1;while(z){if(z&1)ans=ans*d%Mod;d=d*d%Mod;z>>=1;}return ans;
}
int main()
{ios::sync_with_stdio(false);cin.tie(0);freopen("math.in","r",stdin);freopen("math.out","w",stdout);cin>>n>>m;a[1]=1;for(int i=2;i<=n;i++){if(!a[i]){ans[++tot]=i;a[i]=_pow(_pow(i,m),Mod-2);}for(int j=1;j<=tot&&ans[j]*i<=n;j++){a[ans[j]*i]=a[ans[j]]*a[i]%Mod;if(i%ans[j]==0)break;}}for(int i=1;i<=n;i++){
//		cout<

相关内容

热门资讯

最新或2023(历届)最新临沂... 1临沂市第一实验小学(临沂一小)2临沂市第二实验小学(临沂二小)3临沂市童星实验学校4临沂市红旗路实...
最新或2023(历届)最新日照... 1日照市实验小学  2日照市五莲县实验学校(小学部)  3日照市五莲县实验小学  4山东省五莲县实验...
最新或2023(历届)晋中市小... 最新或2023(历届)晋中榆次区小学一年级新生招生报名工作即将启动,晋中榆次区的很多家长关心最新或2...
最新或2023(历届)最新莱芜... 双峰联小电话:0634-6832300邮编:271104地址:莱芜市钢城区艾山街道办事处胡家宅村北卞...
最新或2023(历届)最新德州... 1、实验小学(含西区)省级规范化学校2、天衢东路小学, 省级规范化学校3、湖滨北路小学, 省级规范化...
【ConfluxNews】20... 【ConfluxNews】2023.3.20 ---------------------------...
java实现“数据平滑升级” 文章目录一、摘要二、前提场景说明:三、项目用到的脚本和代码1.项目目录长这样2.jav...
Collection和Map的... Collection和Map的三种不同的遍历方式Collection的三种遍历遍历方式Collect...
最新或2023(历届)最新烟台... 1烟台牟平区武宁镇陡崖子2烟台南通路小学3烟台养正小学4烟台市芝罘区潇翔小学5烟台市芝罘区祥发小学6...
最新或2023(历届)最新济宁... NO.1济宁学院附属小学上榜理由:济宁学院附小是1988年由济宁市政府建成的一所办学标准高、设施配备...
最新或2023(历届)最新泰安... 1、泰安市第一实验学校(小学部)2、泰安市岱岳区岳峰小学3、泰安市新泰市第一实验小学4、新泰市第一实...
最新或2023(历届)最新威海... 1威海市第二实验小学  2威海市实验小学  3威海经技区崮山中心小学  4威海经技区蒿泊小学  5威...
最新或2023(历届)最新潍坊... 1潍坊市实验小学  2潍坊市奎文区胜利东小学  3潍坊市奎文区先锋小学  4潍坊市奎文区实验小学  ...
JavaWeb——使用DBUt... 实验名称: 使用DBUtils实现数据库的增删改查操作                ...
如何做到深度思考? 1、什么是深度思考         深度思考是指对某个问题或主题进行深入、全面、系统的思考和探究。这...
最新或2023(历届)山西省小... 近年来“幼儿园复读现象”引发不小的争议,河北省政协委员吕铁元建议,把现行小学入学年满6周岁的规定修改...
最新或2023(历届)大同市小... 最新或2023(历届)大同城区小学一年级新生招生报名工作即将启动,大同城区的很多家长关心最新或202...
最新或2023(历届)阳泉市小... 最新或2023(历届)阳泉郊区小学一年级新生招生报名工作即将启动,阳泉郊区的很多家长关心最新或202...
最新或2023(历届)太原市小... 入学年龄凡年满六周岁的儿童,其父母或者其他法定监护人可送其入学接受并完成义务教育。太原幼升小入学注意...
最新或2023(历届)最新青岛... 家长必知:青岛小学排名一览表(前10名)最新或2023(历届),青岛实行划片就近入学政策,100%小...