問題はこちら
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