1.取模运算法则:(a+b)%p=(a%p+b%p)%p
(a*b)%p=(a%p*b%p)%p
2.快速幂:每一步都把指数分为两半,相应的底数做平方运算
3.a^b,当b用数组表示时,result初始化为1,result=(result^10)*a^b[i]
#include<stdio.h>
#include<string.h>
#define m 1337
int power(int s,int t) //*求幂的函数 ,快速幂
{
int answer=1;
for(;t!=0;t/=2)
{
if(t%2!=0)
answer=answer*s%m;
s=s*s%m;
}
return answer;
}
int main()
{
int a,pow[101]={0},i,j,length;
char B[101]={'\0'};
while(scanf("%d%s",&a,B)!=EOF)
{
int result=1;
length=strlen(B);
for(i=0,j=length-1;j>=0;)
pow[i++]=B[j--]-'0';//倒序存入
a=a%m; //*求模公式: (a*b)%p=(a%p*b%p)%p
for(i=length-1;i>=0;i--)
result=power(result,10)*power(a,pow[i])%m; //*公式:当a^b,b用数组表示时,result=(result^10)*a^b[i]
a=power(a,10);
printf("%d\n",result);
}
return 0;
}