1046 A^B Mod C
基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题
给出3个正整数A B C,求A^B Mod C。
例如,3 5 8,3^5 Mod 8 = 3。
Input
3个正整数A B C,中间用空格分隔。(1 <= A,B,C <= 10^9)
Output
输出计算结果
Input示例
3 5 8
Output示例
3
OK,long long! long long! long long!
Q >>1和>>=1的区别?
A 第一个是运算,第二个是赋值!赋值!
就这样了
1 #include <bits/stdc++.h> 2 using namespace std; 3 4 int n; 5 char a[10000],b[10000]; 6 long long s1[10000],s2[10000],ans[100000]; 7 const long long mod=1e6; 8 //struct yl{ 9 // int num,val; 10 //}s[50010]; 11 //int tree[50000]; 12 //bool cmp(yl p,yl q) 13 //{ 14 // return p.val>q.val; 15 //} 16 //void add(int a,int b,int c) 17 //{ 18 // r++; 19 // q[r].x=a;q[r].y=b;q[r].w=c; 20 //} 21 22 23 //#define nx x+d[h][0] 24 //#define ny y+d[h][1] 25 26 inline int read() 27 { 28 char ch=getchar(); 29 int k=0; 30 while (ch<‘0‘ || ch>‘9‘) { 31 ch=getchar(); 32 } 33 while (ch>=‘0‘&&ch<=‘9‘) k=k*10+(ch^48),ch=getchar(); 34 return k; 35 } 36 37 int main() 38 { 39 long long a,b,c,k,ans=1; 40 scanf ("%lld%lld%lld",&a,&b,&c); 41 k=a; 42 while (b!=0) 43 { 44 if (b&1!=0) ans=ans*k,ans=ans%c; 45 k=k*k,k=k%c; 46 b>>=1; 47 } 48 printf("%lld",ans); 49 return 0; 50 }