标签:radius turn names class 输入 read har char long
输入b,p,k的值,求b^p mod k的值。其中b,p,k*k为长整型数。
输入格式:
三个整数b,p,k.
输出格式:
输出“b^p mod k=s”
s为运算结果
2 10 9
#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; }
标签:radius turn names class 输入 read har char long
原文地址:http://www.cnblogs.com/z360/p/7860595.html