読者です 読者をやめる 読者になる 読者になる

メモ

yukicoderで遊んでいる競プロゆるふわ勢

yukicoder No.487 2017 Calculation(2017の計算)

問題はこちら
No.487 2017 Calculation(2017の計算) - yukicoder

modpow関数があればそれを使うだけ

#define ll long long
ll modpow(ll a,ll n,int m){return n?modpow(a%m*(a%m)%m,n/2,m)*(n&1?a%m:1)%m:1;}

int main(){
	int m;
	scanf("%d",&m);
	printf("%d",(2017+modpow(2017*2017,2017,m))%m);
	return 0;
}

modpowを持ち出さなくても、指数が小さいので、べき乗部分をfor文でやればよい

int main(){
	int m,i,s=1;
	scanf("%d",&m);
	for(i=0;i<2017;i++)s=s*2017*2017%m;
	printf("%d",(2017+s)%m);
	return 0;
}

(2017*2017)^2017を2017^(2017*2)と読み替えて

n=2017,m,i;main(s){
	for(scanf("%d",&m);i++<2*n;s=s*n%m);
	i=!printf("%d",(s+n)%m);
}

80B