1 条题解

  • 0
    @ 2025-4-7 15:40:29

    Maxelement题解

    对序列的所有元素应用欧拉降幂后排序即可。

    $a^b \equiv \begin{cases} a^{b \bmod \varphi(m)}, & \gcd(a,m) = 1, \\ a^b, & \gcd(a,m)\ne 1, b < \varphi(m), \\ a^{(b \bmod \varphi(m)) + \varphi(m)}, & \gcd(a,m)\ne 1, b \ge \varphi(m). \end{cases} \pmod{m}$

    #include<bits/stdc++.h>
    #define int long long 
    using namespace std;
    using PII=std::pair<int,int>;
    using i64=long long;
    constexpr int euler(int n){
    	int ans=n;
    	for(int i=2;i<=n/i;i++){
    		if(n%i!=0)continue;
    		ans=ans/i*(i-1);
    		while(n%i==0)n/=i;
    	}
    	if(n>1)ans=ans/n*(n-1);
    	return ans;
    }
    constexpr int m=998244353;
    constexpr int phi=euler(m);
    constexpr int power(int a,int b,int m){
    	int res=1ll%m;
    	while(b){
    		if(b&1)res=res*a%m;
    		b>>=1;
    		a=a*a%m;
    	}
    	return res;
    }
    int cal(){
    	int a,b=0;std::cin>>a;
    	char c=std::cin.get();
    	while(!std::isdigit(c))c=std::cin.get();
    	bool flag=false;
    	while(std::isdigit(c)){
    		b=b*10+(c-'0');
    		c=std::cin.get();
    		if(b>=phi)b%=phi,flag=true;
    	}
    	if(flag)b+=phi;
    	int ans=power(a,b,m);
    	return ans;
    }
    void solve(){
    	int n;std::cin>>n;
    	std::vector<int> a;
    	for(int i=0;i<n;i++){
    		a.push_back(cal());
    	}
    	std::sort(a.begin(),a.end());
    	std::cout<<a.back();
    }
    signed main(){
    	std::cin.tie(nullptr);
    	std::ios::sync_with_stdio(false);
    	std::cout<<std::fixed<<std::setprecision(10);
    	int T=1;
    	//std::cin>>T;
    	while(T--)solve();
    	return 0;
    }
    
    • 1

    信息

    ID
    356
    时间
    1000ms
    内存
    256MiB
    难度
    8
    标签
    (无)
    递交数
    15
    已通过
    6
    上传者