题目链接:点击打开链接
题意:求n^m %1000000007 n(1
<= n <= 10^15),m(1
<= m <= 10^12)
有一点坑。。n太大有可能溢出, pow_mod(n,m,mod)=pow(n%mod,m,mod)
推导一下吧。。。
n^m
%mod=(n%mod+k*mod)^m %mod=[(n%mod)^m +..一堆mod的倍数]%mod =(n%mod)^m %mod
老久没敲代码了。。。。QAQ
搞硬件快搞出翔来了。。。。。整天抱着视频看人家怎么写怎么写。。。各种电路图漫天飞。。。。。弄的跟个码农似的
事实证明学的算法 难点的不敢说。。至少简单的还没忘。。。。233333333333
#include <algorithm> #include <iostream> #include <cstring> #include <cstdlib> #include <string> #include <cctype> #include <vector> #include <cstdio> #include <cmath> #include <queue> #include <stack> #include <map> #include <set> #define maxn 10000002 #define _ll __int64 #define ll long long #define INF 0x3f3f3f3f #define Mod 1000000007 #define pp pair<int,int> #define ull unsigned long long using namespace std; ll pow_mod(ll a,ll n,ll p) { if(n==0)return 1; ll ans=pow_mod(a,n/2,p); ans=ans*ans%p; if(n%2==1)ans=ans*a%p; return ans; } ll n,m; int main() { while(~scanf("%lld %lld",&n,&m))printf("%lld\n",pow_mod(n%Mod,m,Mod)); return 0; }
时间: 2024-10-01 16:39:46