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;
}