PTA 7-87 N ^ N(20ポイント)を計算します(高速電力

7-87 N ^ N(20ポイント)を計算し
て整数Nを求め、N ^ Nの10進値(NのN乗)を出力します。この値が214748364を超える場合は、結果の余りを214748364で求めます。

入力形式:
入力データグループの数を表す整数T。次のT行では、各行に整数N(1 <= N <= 10 ^ 9)があります。

出力形式:
N ^ Nの余りを214748364に出力します

入力サンプル:
2
2
3
出力サンプル:
4
27
著者
jzfan
ユニット
阜陽師範大学
コードの長さの制限
16キロバイト
制限時間
1000ミリ秒の
メモリの上限
64メガバイト

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int fast(ll n){
    
    
	ll p=214748364;
	ll ans=1,base=n,a=n,b=n;
	while(b>0){
    
    
		if(b&1){
    
    //位运算次方
			ans=ans*base%p;
		}
		base=base*base%p;
		b>>=1;
	}
	return ans%p;
}
int main(){
    
    
	int t;
	cin>>t;
	while(t--){
    
    
		ll n;
		cin>>n;
		cout<<fast(n)<<endl;
	}

	return 0;
	
}

おすすめ

転載: blog.csdn.net/Minelois/article/details/113281174