专栏文章
题解:P14321 「ALFR Round 11」D Adjacent Lifting, Fewest Rounds
P14321题解参与者 8已保存评论 8
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 8 条
- 当前快照
- 1 份
- 快照标识符
- @minhntlf
- 此快照首次捕获于
- 2025/12/02 02:34 3 个月前
- 此快照最后确认于
- 2025/12/02 02:34 3 个月前
先看小样例:
| 1 | 3 | 5 | 7 | 9 |
|---|---|---|---|---|
发现差不多是 级别的:
| 1! | 3! | 5! | 7! | 9! |
|---|---|---|---|---|
上面除以下面得到:
| 1 | 3 | 5 | 7 | 9 |
|---|---|---|---|---|
改一下分母:
| 1 | 3 | 5 | 7 | 9 |
|---|---|---|---|---|
发现分母为 。
而分子可以表示为:
| 1 | 3 | 5 | 7 | 9 |
|---|---|---|---|---|
注意到分子在 为奇数时为 ,偶数时为 。或者写为 。
综上所述,答案即为 。
线性求逆元和阶乘, 回答。时间复杂度 。
参考代码:
CPP#include<iostream>
using namespace std;
using ll=long long;
const ll N=1e7;
ll mod;
ll inv[N+10],fac[N+10];
int main(){
int t;
cin>>t>>mod;
fac[0]=1;
inv[1]=1;
for(int i=1;i<=N;++i)fac[i]=fac[i-1]*i%mod;
for(int i=2;i<=N;++i)inv[i]=(mod-mod/i)*inv[mod%i]%mod;
for(;t;--t){
ll n;
scanf("%lld",&n);
printf("%d\n",fac[n]*inv[(n+3)/2]%mod*((n+1)*(n+1)/4%mod-(n+1)/2%2)%mod);
}
}
相关推荐
评论
共 8 条评论,欢迎与作者交流。
正在加载评论...