您的位置:首页 > 其它

C - !সহজ ~কঠিন -- (二分求幂)

2016-05-13 23:09 357 查看
C - !সহজ ~কঠিন
Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%lld
& %llu
Submit Status

Description

For given integers m and n, compute mn (mod 1,000,000,007). Here, A (mod M) is the remainder when A is divided by M.

Input

mn

Two integers m and n are given in a line.

Output

Print mn (mod 1,000,000,007) in a line.

Constraints

1 ≤ m ≤ 100
1 ≤ n ≤ 109

Sample Input 1

2 3

Sample Output 1

8

Sample Input 2

5 8

Sample Output 2

390625


//方法有点像二分
#include <stdio.h>
#include <math.h>
#define mod 1000000007
typedef long long ll;
ll pow_mod(int a,int n){
if(n==0) return 1;
int x = pow_mod(a,n/2);
ll ans = (ll)x*x%mod;
if(n%2==1) ans =ans*a%mod;
return ans;
}
int main(){
int m,n,i;
long long sum;
scanf("%d %d",&m,&n);
sum = pow_mod(m,n);
printf("%lld\n",sum);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: