2011的n次方

简介: 题目:http://noi.openjudge.cn/ch0204/2991/总时间限制:1000ms  内存限制: 65536kB描述已知长度最大为200位的正整数n,请求出2011^n的后四位。

题目:http://noi.openjudge.cn/ch0204/2991/

总时间限制:1000ms  内存限制: 65536kB
描述
已知长度最大为200位的正整数n,请求出2011^n的后四位。
输入
第一行为一个正整数k,代表有k组数据,k<=200接下来的k行,

每行都有一个正整数n,n的位数<=200
输出
每一个n的结果为一个整数占一行,若不足4位,去除高位多余的0
样例输入
3
5
28
792
样例输出
1051
81
5521

参考:

利用循环节:http://m.blog.csdn.net/u013675643/article/details/51820648

高精度除法:http://blog.csdn.net/qq_35479641/article/details/51810945

 

下面的思路参照循环节的做法。

题目只需要输出后四位,因此答案必然有一个最多5位数的循环节。于是可以先写个暴力去找循环节,发现循环节长度为500,这个数就很好处理了。后面读入n时只保留后三位数,再mod500就得出答案了,比写高精度简单多了~

 1 #include<stdio.h>
 2 #include<string.h>
 3 // m^n % k
 4 long long quickpow(long long m,long long n,long long k)
 5 {
 6     long long ans = 1;
 7     while (n > 0)
 8     {
 9           if (n & 1)
10              ans = (ans*m)%k;
11           n = n >> 1 ;
12           m = (m*m)%k;
13     }
14     return ans;
15 }
16 int main(int argc, char *argv[])
17 {
18     int k;
19     int i;
20     char n[205];
21     int N,len;
22     scanf("%d",&k);    
23     for(i=0;i<k;i++)
24     {
25         scanf("%s",n);getchar();
26         N=0;
27         len=strlen(n);
28         N=n[len-1]-'0';
29         if(len>=2) N=(n[len-2]-'0')*10+N;
30         if(len>=3) N=(n[len-3]-'0')*100+N;
31         if(len>=4) N=(n[len-4]-'0')*1000+N;
32         N=N%500;
33         printf("%lld\n",quickpow(2011,N,10000));
34     }
35     return 0;
36 }

 还有一个数学论证:http://blog.csdn.net/li744831579/article/details/8784547

 

相关文章
|
测试技术 开发工具 Android开发
跨平台的视频采集、直播SDK SmarterStreaming
SmarterStreaming 跨平台的视频采集、直播SDK(支持Windows/android/iOS,支持私有协议和RTMP推流),也许是国内最靠谱的视频直播推流、播放SDK之一,助您轻松实现类似于花椒、映客、斗鱼手机直播推送与播放。
2116 0
|
JavaScript 前端开发 API
花了一天的时间,地板式扫盲了vue3中所有API盲点
这篇文章全面介绍了Vue3中的API,包括组合式API、选项式API等内容,旨在帮助开发者深入了解并掌握Vue3的各项功能。
花了一天的时间,地板式扫盲了vue3中所有API盲点
bigdecimal加减乘除
bigdecimal加减乘除
|
PyTorch 算法框架/工具
PyTorch中 nn.Conv2d与nn.ConvTranspose2d函数的用法
PyTorch中 nn.Conv2d与nn.ConvTranspose2d函数的用法
734 2
PyTorch中 nn.Conv2d与nn.ConvTranspose2d函数的用法
|
Java Maven Spring
Spring Boot中的自定义Starter开发
Spring Boot中的自定义Starter开发
pd.set_option()参数详解
pd.set_option()参数详解
339 0
|
关系型数据库 MySQL 数据库
MySQL数据库的安装与配置
MySQL数据库的安装与配置
|
安全 Android开发 数据安全/隐私保护
制作系统签名
五月打卡
228 0
|
SQL 关系型数据库 MySQL
关于MySQL8.0.16压缩包安装配置教程
关于MySQL8.0.16压缩包安装配置教程
|
监控 安全 关系型数据库
OceanBase数据库完整版和商业版的主要区别在于
OceanBase数据库完整版和商业版的主要区别在于
378 3