原题链接:信息学奥赛一本通T1234-2011
快速幂的思路
python
from functools import reduce
print(*map(lambda _:reduce(lambda x,y:x**10*2011**int(y)%10000,input(),1),range(int(input()))),sep='\n')
java
import java.util.Scanner;
import java.math.BigInteger;
import java.util.stream.IntStream;
public class Main {
public static void main(String[] args) {
final Scanner in = new Scanner(System.in);
IntStream.range(0,in.nextInt()).mapToObj(i->BigInteger.valueOf(2011).modPow(in.nextBigInteger(),BigInteger.valueOf(10000))).forEach(System.out::println);
in.close();
}
}
C(快速幂)
#include<stdio.h>
#define mod 10000
int f(int x,int y,int z){
return y?f(x*x%mod,y>>1,y&1?z*x%mod:z):z;
}
int main(){
int n,r,c;
for(scanf("%d\n",&n);n--;printf("%d\n",r))
for(r=1;(c=getchar())!='\n';r=f(r,'\n',1)*f(2011,c^'0',1)%mod);
}
C(打表)
#include<stdio.h>
#define mod 10000
int main(){
int n,r,c,x,a[]={1,2011,4121,7331,2641,1051,3561,1171,4881,5691};
for(scanf("%d\n",&n);n--;printf("%d\n",r))
for(r=1;(c=getchar())!='\n';r=x*a[c&15]%mod)
x=r*r%mod,x=x*x%mod,x=x*r%mod,x=x*x%mod;
}
3.2 分
2 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复