1. 程式人生 > >洛谷——P1226 取余運算||快速冪

洛谷——P1226 取余運算||快速冪

adg tdi ring span region 復制 ios ostream 結果

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

快速冪取膜版
#include<cstdio>
#include<cstring>
#include<iostream>
#include
<algorithm> #define LL long long using namespace std; LL a,b,p,ans; LL read() { LL x=0,f=1; char ch=getchar(); while(ch<0||ch>9){if(ch==-)f=-1;ch=getchar();} while(ch>=0&&ch<=9) x=x*10+ch-0,ch=getchar(); return x*f; } LL multi(LL a,LL b,LL p) { LL aa
=0; while(b) { if(b&1) aa=(aa+a)%p; a=a*2%p,b>>=1; } return aa; } LL qpow(LL a,LL b,LL p) { LL res=1; while(b) { if(b&1) res=multi(res,a,p); a=multi(a,a,p),b>>=1; } return res; } int main() { a
=read(),b=read(),p=read(); ans=qpow(a,b,p); printf("%lld^%lld mod %lld=%lld",a,b,p,ans); return 0; }

洛谷——P1226 取余運算||快速冪