本题题意:给出N和k,求2008的2008的N次方的因子和次幂,是不是很绕。。。最后结果要取余k。
代码如下:
/* 又是一道反人类的题.... 看来没有题解,我真的是寸步难行了.... */ #include <iostream> using namespace std; typedef long long ll; ll pow(ll a,ll b,ll mod){ ll sum = 1; while(b){ if(b&1){ sum = sum * a % mod; } a = a * a % mod; b >>= 1; } return sum; } int main(){ ll n,k; while(cin >> n >> k && (n || k)){ ll a = pow(2,3*n+1,k*250) - 1; ll b = pow(251,n+1,k*250) - 1; ll t = a * b % (k * 250) / 250; ll sum = pow(2008,t,k); cout << sum << endl; } return 0; }
这题的唯一的问题就是250不一定有逆元,因此要把它留出来,最后除掉。