P1226 【模板】快速幂||取余运算
题目描述
输入b,p,k的值,求b^p mod k的值。其中b,p,k*k为长整型数。
输入输出格式
输入格式:
三个整数b,p,k.
输出格式:
输出“b^p mod k=s”
s为运算结果
输入输出样例
输入样例#1:
2 10 9
输出样例#1:
2^10 mod 9=7
C++:
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long b,p,k,s,t;
cin>>b>>p>>k;
cout<<b<<'^'<<p<<" mod "<<k<<'=';
s = b % k;
t = 1;
for(int i = 2;i <= p; i++){
s = s * b % k ;
if(s == b % k) break;
t++;
}
p %= t;
s = 1;
if( !p ) p = t;
for(int i = 1;i <= p; i++)
s = s * b % k;
cout<<s;
return 0;
}
Java:
import java.util.*;
public class Main {
public static void main(String[] agrs){
Scanner sc = new Scanner(System.in);
long b,p,k,s,t;
b = sc.nextInt();
p = sc.nextInt();
k = sc.nextInt();
s = b % k;
System.out.print(b + "^" + p + " mod " + k + "=");
t = 1;
for(int i = 2; i <= p; i++){
s = s * b % k;
if(s == b % k)
break;
t++;
}
p %= t;s = 1;
if(p == 0)
p = t;
for(int i = 1;i <= p; i++)
s = s * b % k;
System.out.print(s);
}
}
Python:
b,p,k = input().split()
b = int(b)
p = int(p)
k = int(k)
s = b % k
print(str(b) + '^' + str(p) + ' mod ' + str(k) + '=',end = '')
t = 1
for i in range(2,p+1):
s = s * b % k
if s == b % k:
break
t+=1
p %= t
s = 1
if p == 0:
p = t
for i in range(1,p+1):
s = s * b % k
print(s)