首页 > 代码库 > SDUT 3097-小鑫爱数学(快速幂)
SDUT 3097-小鑫爱数学(快速幂)
题目链接:点击打开链接
题意:求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; }
SDUT 3097-小鑫爱数学(快速幂)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。