首页 > 其他 > 详细

【UOJ 667】2011的n次方

时间:2020-10-05 22:14:24      阅读:25      评论:0      收藏:0      [点我收藏+]

【题目描述】:

已知长度最大为200位的正整数n,请求出2011^n的后四位。

【输入描述】:

第一行为一个正整数k,代表有k组数据,接下来的k行,

每行都有一个正整数n。

【输出描述】:

每一个n的结果为一个整数占一行,若不足4位,去除高位多余的0。

【样例输入】:

3
5
28
792

【样例输出】:

1051
81
5521

【时间限制、数据范围及描述】:

时间:1s 空间:64M

n的位数<=200; k<=200

 

题解:打表发现——500即为一个循环节,那么就很简单啦 QWQ!

#include<cstdio>
#include<iostream>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
int x,Estar,len;
char s[555];
int f[555];
void QGhappy(){
    int now=1;
    for(int i=1;i<=500;i++) 
        { now*=2011; now%=10000; f[i]=now; }
}
int DYG(){
    int xx; len=strlen(s);
    if(len==1) xx=(s[len-1]-0);
    if(len==2) xx=(s[len-1]-0)+10*(s[len-2]-0);
    if(len>2) xx=(s[len-1]-0)+10*(s[len-2]-0)+100*(s[len-3]-0);
    return xx;
} 

int main(){
    freopen("bigpower.in","r",stdin);
    freopen("bigpower.out","w",stdout);
    cin>>Estar; QGhappy();
    while(Estar--){
        cin>>s;  x=DYG();
        printf("%d\n",f[x%500]);
    }
    return 0;
}

 

【UOJ 667】2011的n次方

原文:https://www.cnblogs.com/wuhu-JJJ/p/13770347.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!