数论专题hdu1852

  本题题意:给出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不一定有逆元,因此要把它留出来,最后除掉。

posted @ 2017-09-15 22:46  mtl6906  阅读(104)  评论(0编辑  收藏  举报