直接敲的a^b mod c,基本代码要好好掌握
基本情况是1Y.
注意pro函数的优化
-_-~其实可以不用写这么麻烦的不过为了通用性
基本情况是1Y.
注意pro函数的优化
-_-~其实可以不用写这么麻烦的不过为了通用性
- #include <iostream>
- using namespace std;
- typedef unsigned long long llong;
- llong pro(llong a,llong b,llong n)
- {
- llong back=0,temp=a%n;
- while (b)
- {
- if (b&0x1) if ((back+=temp)>n) back-= n;
- if ((temp<<=1)>n)temp -= n;
- b >>= 1;
- }
- return back;
- }
- llong mo(llong a,llong b,llong c)
- {
- llong ret=1;
- while(b)
- {
- if(b&0x1) ret=pro(ret,a,c);
- a=pro(a,a,c);
- b>>=1;
- }
- return ret;
- }
- int main()
- {
- llong a,b,c;
- while(scanf("%llu%llu%llu",&a,&b,&c)!=EOF)
- printf("%llu/n",mo(a,b,c));
- return 0;
- }