社区讨论
不明原因过了样例爆炸求掉
P9777[HUSTFC 2023] Fujisaki 讨厌数学参与者 2已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @mhjl8xo5
- 此快照首次捕获于
- 2025/11/04 04:24 4 个月前
- 此快照最后确认于
- 2025/11/04 04:24 4 个月前
CPP
#include <bits/stdc++.h>
using namespace std;
long long x[3][3],y[3][3],t[3][3];
long long mod,k,n;
void jzksm(){
x[1][1]=0,x[1][2]=mod-1,x[2][1]=1,x[2][2]=k%mod;
y[1][1]=y[2][2]=1;
while(n){
if (n%2){
memset(t,0,sizeof(t));
for(int i=1;i<=2;i++){
for(int j=1;j<=2;j++){
for(int k=1;k<=2;k++){
t[i][j]+=(x[i][k]*y[k][j]);
t[i][j]=(t[i][j]+mod)%mod;
}
}
}
for(int i=1;i<=2;i++){
for(int j=1;j<=2;j++){
y[i][j]=t[i][j];
}
}
}
memset(t,0,sizeof(t));
for(int i=1;i<=2;i++){
for(int j=1;j<=2;j++){
for(int k=1;k<=2;k++){
t[i][j]+=(x[i][k]*x[k][j]);
t[i][j]=(t[i][j]+mod)%mod;
}
}
}
for(int i=1;i<=2;i++){
for(int j=1;j<=2;j++){
x[i][j]=t[i][j];
}
}
n/=2;
}
}
int main(){
ios::sync_with_stdio(false);
cin>>mod>>k>>n;
if (n==0){
cout<<0<<endl;
return 0;
}
n--;
jzksm();
long long p[2],r[2];
p[1]=k;
p[2]=(k*k-2);
p[1]=(p[1]+mod)%mod;
p[2]=(p[2]+mod)%mod;
r[1]=r[2]=0;
for(int i=1;i<=2;i++){
for(int k=1;k<=2;k++){
r[i]=(r[i]+p[k]*y[k][i]%mod+mod)%mod;
}
}
cout<<r[1]%mod<<endl;
return 0;
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...