zoukankan      html  css  js  c++  java
  • 十进制快速幂

    给你一个大数n,求2的n次幂;

    由于n很大,用普通的快速幂已经不能够很快的算出了,因为不好判断奇偶以及除2这些,不过不过用十进制快速幂求普通的ll及int型数也很快;

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    const int maxn=1e4+5;
    int mod=1e9+7;
    ll qpow(ll a,ll b)
    {
        if(b==0)
            return 1;
        ll ans=1;
        while(b)
        {
            if(b&1)
                ans=(ans*a)%mod;
            a=a*a%mod;
            b>>=1;
        }
        return ans%mod;
    }
    int main()
    {
        char arr[maxn];
        ll bit[20];
        bit[0]=1;
        for(int i=1; i<10; i++)
        {
            bit[i]=bit[i-1]*2;
        }
        scanf("%s",arr);
        int len=strlen(arr);
        ll ans=1;
        for(int i=0; i<len; i++)
        {
            ans=qpow(ans,10)%mod;
            ans=ans*bit[arr[i]-'0']%mod;
        }
        printf("%lld
    ",(ans+mod)%mod);
        return 0;
    }
    

      

  • 相关阅读:
    Linux基础
    杂谈
    MySQL基础
    Effective Java-第4章
    Effective Java-第三章
    Effective Java-第二章
    mybatis
    mapper.xml文件
    Mybatis
    mybatis-config.xml文件详解
  • 原文地址:https://www.cnblogs.com/lengsong/p/11290832.html
Copyright © 2011-2022 走看看