无情CE求助,悬一关
查看原帖
无情CE求助,悬一关
1237628
Heavenly_meteorite楼主2025/8/4 22:23
#include <bits/stdc++.h>
#include <algorithm>
#include <bitset>
#include <cctype>
#include <cerrno>
#include <clocale>
#include <cmath>
#include <complex>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <deque>
#include <exception>
#include <fstream>
#include <functional>
#include <limits>
#include <list>
#include <map>
#include <iomanip>
#include <ios>
#include <iosfwd>
#include <iostream>
#include <istream>
#include <ostream>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <stdexcept>
#include <streambuf>
#include <cstring>
#include <utility>
#include <vector>
#include <cwchar>
#include <cwctype>
#include <complex.h>
#include <fenv.h>
#include <inttypes.h>
#include <stdbool.h>
#include <stdint.h>
#include <tgmath.h>
#define int __int128
using namespace std;
int n;
int Mod;
int g;
struct Matrix{
	int num[5][5];
	void clear(){
		for(int i=1;i<=2;i++){
			for(int j=1;j<=2;j++){
				num[i][j]=0;
			}
		}
	}
};
Matrix operator*(Matrix x,Matrix y){
	Matrix sum;
	sum.clear();
	for(int i=1;i<=2;i++){
		for(int k=1;k<=2;k++){
			for(int j=1;j<=2;j++){
				sum.num[i][j]+=x.num[i][k]%Mod*y.num[k][j]%Mod;
				sum.num[i][j]%=Mod;
			}
		}
	}
	return sum;
}
Matrix Fast_Power(Matrix A,int k){
	Matrix sum;
	sum.clear();
	for(int i=1;i<=2;i++) sum.num[i][i]=1;
	while(k){
		if(k&1) sum=sum*A;
		A=A*A;
		k>>=1;
	}
	return sum;
}
signed main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	int a,c,x0;
	cin>>Mod>>a>>c>>x0>>n>>g;
	Matrix A,P;
	A.clear();
	P.clear();
	A.num[1][1]=x0;
	A.num[1][2]=c;
	P.num[1][1]=a;
	P.num[2][1]=1;
	P.num[2][2]=1;
	int ans=(A*Fast_Power(P,n)).num[1][1]%g;
	long long as=ans;
	cout<<as;
	return 0;
}

2025/8/4 22:23
加载中...