sum 大数取余+快速幂

Posted 博客就叫Molex好了

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sum 大数取余+快速幂相关的知识,希望对你有一定的参考价值。

Sum

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)
Total Submission(s): 3980    Accepted Submission(s): 1620


Problem Description
技术分享图片
 

 

Sample Input
2
 

 

Sample Output
2
Hint
1. For N = 2, S(1) = S(2) = 1. 2. The input file consists of multiple test cases.
 

 

Source
 

 

Recommend
zhuyuanchen520
 
一道学长教的数论题。找出规律后发现求的是2^(n-1)。由于n非常大,所以在输入的时候可以分位取余(((a*100%MOD)+b*10%NOD)+c%MOD)%MOD,最后跑一边快速幂。
 
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<string>
#include<math.h>
#include<queue>
#include<stack>
#include<map>
#include<set>
#include<vector>
#include<algorithm>
#define MAX 1000005
#define INF 0x3f3f3f3f
#define MOD 1000000007
using namespace std;

typedef long long ll;

ll qMod(ll a,ll b){
    ll ans=1;
    while(b>0){
        if(b&1) ans=ans*a%MOD;
        b>>=1;
        a=a*a%MOD;
    }
    return ans;
}
int main()
{
    int n,len,i;
    char s[MAX];
    while(~scanf(" %s",s)){
        ll c=0;
        len=strlen(s);
        for(i=0;i<len;i++){
            int x=s[i]-0;
            c=c*10+x;
            if(c>1000000006) c%=1000000006;
        }
        c=((c-1)%1000000006+1000000006)%1000000006;
        printf("%lld\n",qMod(2,c));
    }
    return 0;
}

 

以上是关于sum 大数取余+快速幂的主要内容,如果未能解决你的问题,请参考以下文章

快速幂+大数取模

快速幂+大数取模

EOJ3134. 短信激活码(大数幂取模)

ACM入门之快速幂

解题报告 (十五) 扩展欧拉定理

快速幂乘法&快速幂取余