2991:2011 求2011^n的后四位。

2991:2011

总时间限制: 
1000ms

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

每行都有一个正整数n,n的位数<=200

输出
每一个n的结果为一个整数占一行,若不足4位,去除高位多余的0
样例输入
3
5
28
792
样例输出
1051
81
5521
 1 #include<iostream>
 2 #include<cstring>
 3 #include<cstdio>
 4 using namespace std;
 5 char a[201];
 6 int f(int n)  //快速幂 ,求2011的n次方并求余10000;
 7 {
 8     if(n==0)return 1;
 9     if(n==1)return 2011;
10     int b=f(n/2)%10000;
11     b=(b*b)%10000;
12     if(n%2==1)b=(b*2011)%10000;
13     return b;
14 }
15 int main()
16 {
17     int l,k,x=0;
18     cin>>k;
19     for(int i=1;i<=k;++i)
20     {
21         x=0;
22         memset(a,0,sizeof(a));//一定要赋初值0
23         scanf("%s",a);
24         l=strlen(a);
25         if(l==1)x=a[0]-‘0‘;        //将字符串转为数字;
26         else if(l==2)x=10*(a[0]-‘0‘)+(a[1]-‘0‘);
27         else if(l==3)x=100*(a[0]-‘0‘)+10*(a[1]-‘0‘)+(a[2]-‘0‘);
28         else for(int i=l-4;i<=l-1;++i)
29         x=x*10+(a[i]-‘0‘);
30         cout<<f(x)<<endl;
31     }
32     return 0;
33 } 

时间: 2024-10-10 04:00:43

2991:2011 求2011^n的后四位。的相关文章

hdu1568&amp;&amp;hdu3117 求斐波那契数前四位和后四位

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1568 题意:如标题所示,求斐波那契数前四位,不足四位直接输出答案 斐波那契数列通式: 当n<=20的时候,不足四位,所以直接打表. 当n>20的时候,大于四位的时候,ans满足这个公式:ans=-0.5*log10(5.0)+num*1.0*log10((1+sqrt(5.0))/2.0); 这个公式是怎么来的呢?我们可以对an取10的对数,根据对数的性质. log10(ans)=log10(1/

已知w是一个大于10但不大于1000000的无符号整数,若w是n(n≥2)位的整数,则求出w的后n-1位的数。

描述 已知w是一个大于10但不大于1000000的无符号整数,若w是n(n≥2)位的整数,则求出w的后n-1位的数. 输入 第一行为M,表示测试数据组数.接下来M行,每行包含一个测试数据. 输出 输出M行,每行为对应行的n-1位数(忽略前缀0).如果除了最高位外,其余位都为0,则输出0. 样例输入 4 1023 5923 923 1000 样例输出 23 923 23 0我的程序: #include<iostream>#include<vector>#include<cmat

hdu 2242 无向图/求用桥一分为二后使俩个bcc点权值和之差最小并输出 /缩点+2次新图dfs

题意如标题所述, 先无向图缩点,统计出每个bcc权,建新图,然后一遍dfs生成树,标记出每个点(新图)以及其子孙的权值之和.这样之后就可以dfs2来枚举边(原图的桥),更新最小即可. 调试了半天!原来是建老图时候链式前向星和新图的vector<vector< int>>俩种存图搞乱了!!!不可原谅!哎!愚蠢!愚不可及!提交后1A. 后来百度之后,发现说是用树形dp,看了代码解法,竟然和我的是一样的算法..原来这种算法可以叫树形dp...的确有点dp味道..不过感觉不太浓.. 以后多

银行卡格式化输出及后四位显示

#import <UIKit/UIKit.h> @interface BankCardFormat : UITextField @end #import "BankCardFormat.h" @interface BankCardFormat ()<UITextFieldDelegate> { NSString *previousTextFieldContent; UITextRange *previousSelection; } @end @implement

POJ 1226后缀数组:求出现或反转后出现在每个字符串中的最长子串

思路:这题是论文里的最后一道练习题了,不过最后一题竟然挺水的. 因为求的是未反转或者反转后,最长公共子串. 刚开始还真不知道怎么构建连接成一个字符串,因为需要有反转嘛! 但是其实挺简单的,把未反转的和反转后的字符串都连起来,中间用未出现过的字符隔开就行了!然后未反转的和反转的在同一组. 二分枚举最长的公共前缀长度,然后统计看看这个最长的长度在不在所有的组里,如果在就符合-- #include<iostream> #include<cstdio> #include<cstrin

腾讯面试题之求数组前小后大划分元素

时间:2014.04.29 地点:基地二楼 --------------------------------------------------------------------------------------- 一.题目 整型数组里找出符合要求的元素,满足前面的元素比该元素小,后面的元素比该元素大. 时间复杂度为:O(n) 原理:另外开辟两个数组,初始化为原数组值,一个用于存储到当前元素为止前面部分的最大值,另一个用于存储到当前元素为止,后面部分的最小值.最后用当前元素和最大值数组和最小

PipeSim.v2010+Eclipse 2012+Petrel 2011+Petrel 2011

Sculumberger.PipeSim.v2010.1 NI-Calibration.Executive.v3.2-ISO 4CD Mentor Graphics SystemVision 5.7 Update1.0 1DVD REFORM-3PC.V7.0 PVsyst.v5.55 Intergraph SmartPlant 3D 2009 Code V.v10.4.SP1        LightTools.v7.3      Neotec Wellflo V8.1.6  Coade PV

求一个数阶乘后位数问题

问题:In many applications very large integers numbers are required. Some of these applications are using keys for secure transmission of data, encryption, etc. In this problem you are given a number, you have to determine the number of digits in the fa

数字保留前四位后四位中间用* 代替

+ (NSString *)bankNumber:(NSString *)number { if (number == nil) { return nil; } NSString *str = @"****"; NSString *starStrNumber = [number substringToIndex:4]; NSString *endStrNumber = [number substringFromIndex:number.length - 4]; NSString *st