矩阵没过样例求助
查看原帖
矩阵没过样例求助
324666
diqiuyi奶龙楼主2022/6/19 21:42

rt,怀疑式子退错了

#include <bits/stdc++.h>
using namespace std;
#define int __int128
inline int read(){
	int x=0;bool f=1;char ch=getchar();
	while(ch<'0'||ch>'9'){if(ch=='-')f=0;ch=getchar();}
	while(ch>='0'&&ch<='9'){x=(x<<3)+(x<<1)+(ch^48);ch=getchar();}
	return f?x:-x;
}
inline void out(int x){
	if(x<0) putchar('-'),x=-x;
	if(x>9) out(x/10);
	putchar(x%10|48);
}
int n,mod,aa,c,x,g;
struct jz{
    int a[2][2];
}base,xx;
inline jz mul(jz x,jz y){
    jz z;
    memset(z.a,0,sizeof(z.a));
    for(int k=0;k<2;k++)
        for(int i=0;i<2;i++)
            for(int j=0;j<2;j++)
                z.a[i][j]+=(x.a[i][k]*y.a[k][j]%mod),z.a[i][j]%=mod;
    return z;
}
inline jz Pow(jz x,int y){
    jz res=x;
    for(y--;y;x=mul(x,x),y>>=1)
        if(y&1)
            res=mul(res,x);
    return res;
}
signed main(){
	mod=read(),aa=read(),c=read(),x=read(),n=read(),g=read();
	base.a[0][0]=x,base.a[1][0]=c;
	xx.a[0][0]=aa,xx.a[0][1]=xx.a[1][1]=1;
	base=mul(base,Pow(xx,n));
	out(base.a[0][0]%g),putchar(10);
	return 0;
}
2022/6/19 21:42
加载中...