计算(((S^N)%10)^M)%1000000007的值,其中S、N、M的取值范围均为 1~10的9次方
#include <stdio.h>
long long get(long long a,long long b,long long c){
long long ans=1;
if(a==0&&b==0) return -9999;
while(b!=0){
if(b%2==1){
ans=ans*a;
ans=ans%c;
}
b=b/2;
a=a*a;
a=a%c;
ans=ans%c;
}
return ans;
}
int main(){
long long s,n,m;
long long temp1;
long long last;
printf("请分别输入s,m,n\n");
while(scanf("%lld%lld%lld",&s,&n,&m)!=EOF){
temp1=get(s,n,10);//进行第一层幂次模10运算
last=get(temp1,m,1000000007);//进行外层幂次模运算
printf("the answer is:%lld\n",last) ;
printf("请分别输入s,m,n\n");
}
}
#include <stdio.h>
long long get(long long a,long long b,long long c){
long long ans=1;
if(a==0&&b==0) return -9999;
while(b!=0){
if(b%2==1){
ans=ans*a;
ans=ans%c;
}
b=b/2;
a=a*a;
a=a%c;
ans=ans%c;
}
return ans;
}
int main(){
long long s,n,m;
long long temp1;
long long last;
printf("请分别输入s,m,n\n");
while(scanf("%lld%lld%lld",&s,&n,&m)!=EOF){
temp1=get(s,n,10);//进行第一层幂次模10运算
last=get(temp1,m,1000000007);//进行外层幂次模运算
printf("the answer is:%lld\n",last) ;
printf("请分别输入s,m,n\n");
}
}