0分求助,玄关
查看原帖
0分求助,玄关
609926
Aveiro7楼主2024/7/8 14:33

这道题我打算使用逆元来做,但是逆元和快速幂算出来的结果都是对的,但是最终输出不对,0分,前三个点WA,后两个TLE

#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int N=5e6+6;
int ksm(ll m,ll n,ll mod){
	ll ans=1;
	while(n){
		if(n&1)	
      ans=m*ans%mod;
		m=m*m%mod;
		n/=2;
	}
   return ans;
} 
int exgcd(int a,int b,int &x,int &y){
	if(!b){
		x=1,y=0;
		return a;
	}
	int ans = exgcd(b,a%b,x,y);

	int t = x;   
	x = y;  // x1 = y2
	y = t - (a/b) * y;  // y1 = x2 - (a/b) * y2
	return ans;
}
int main(){
	int a,b,c,x,y,ans[N];
	int n,p,k;
	cin>>n>>p>>k;
	for(int i=1;i<=n;i++){
		cin>>a;
		b=p;
		exgcd(a,b,x,y);  // ax+by=1 ax = 1 (mod b)
		x = (x % b + b) % b;
		ans[i]=x;
	}
	long long cnt=0;
	for(int i=1;i<=n;i++)
	{
		cnt+=ksm(k,i,p)*ans[i];
		//cout<<ans[i]<<endl;
		//cout<<ksm(k,i,p)<<endl;
	}
	cout<<cnt<<endl;
	return 0;
}
2024/7/8 14:33
加载中...