nyoj 88 汉诺塔 (快速模幂法)



                题目地址http://acm.nyist.net/JudgeOnline/problem.php?pid=88

                 这题是简单的汉诺塔入门   分析之后可以得出f(k)=2^k-1  因为这道题要求是留最后6位,所以就是相当于求2^b%1000000-1的值

                 用的是快速模幂法

#include<iostream>
#include<cstdio>
using namespace std;
long long mod(long long a,long long b,long long c)
{
    long long t=1;
    while(b)
    {
        if(b%2)
            t=t*a%c;
        a=a*a%c;
        b/=2;
    }
    return t;
}
int main()
{
    long long b,t;
    scanf("%lld",&t);
    while(t--)
    {
        scanf("%lld",&b);
        printf("%lld\n",mod(2,b,1000000)-1);
    }
    return 0;
}




你可能感兴趣的:(汉诺塔,nyoj,88)