51nod 1013快速幂 + 费马小定理
Posted sweatOtt
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了51nod 1013快速幂 + 费马小定理相关的知识,希望对你有一定的参考价值。
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1013
这是一个等比数列,所以先用求和公式,然后和3^(n+1)有关,有n比较大,所以用快速幂来解决,又有/2的操作,所以可以用费马小定理取逆元。
#include<map> #include<queue> #include<stack> #include<cmath> #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #define INF 99999999 #define mod 1000000007 #define ll __int64 #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 #define key_value ch[ch[root][1]][0] using namespace std; const int MAXN = 10010; ll pow_mod(ll x,ll n) { ll res = 1; while(n) { if(n & 1) res=(res*x)%mod; x=(x*x)%mod; n >>= 1; } return res; } int main() { ll n; ll temp = pow_mod(2,mod-2); while(cin >>n){ cout<<temp*(pow_mod(3,n+1)-1)%mod<<endl; } return 0; }
以上是关于51nod 1013快速幂 + 费马小定理的主要内容,如果未能解决你的问题,请参考以下文章
51Nod 1119 机器人走方格 V2 组合数学 费马小定理