1497 取余运算

1497 取余运算

 

 时间限制: 1 s
 空间限制: 128000 KB
 题目等级 : 钻石 Diamond
 
 
 
题目描述 Description

输入b,p,k的值,编程计算bp mod k的值。其中的b,p,k*k为长整型数(2^31范围内)。

输入描述 Input Description

b p k 

输出描述 Output Description

输出b^p mod k=?

=左右没有空格

样例输入 Sample Input

2  10  9

样例输出 Sample Output

2^10 mod 9=7

数据范围及提示 Data Size & Hint

 原理:

A*B%K = (A%K )*(B% K )%K
 
 1 #include<iostream>
 2 using namespace std;
 3 long long b,p,k,a;
 4 int f(int p)
 5 {
 6     if(p==0)return 1;
 7     a=f(p/2)%k;
 8     a=(a*a)%k;
 9     if(p%2==1)return (a*b)%k;
10     else return a;
11 }
12 int main()
13 {
14     cin>>b>>p>>k;
15     int c=b;
16     b%=k;
17     cout<<c<<"^"<<p<<" mod "<<k<<"="<<f(p);
18     return 0;
19 }

 

posted @ 2017-03-24 17:31  MJT12044  阅读(219)  评论(0编辑  收藏  举报