码迷,mamicode.com
首页 > 其他好文 > 详细

2011

时间:2018-07-13 15:16:41      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:lib   fine   bool   span   ==   数据   cst   查看   ace   

题目链接http://noi.openjudge.cn/ch0204/2991/
描述
已知长度最大为200位的正整数n,请求出2011^n的后四位。
输入
第一行为一个正整数k,代表有k组数据,k<=200接下来的k行,

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

查看

这题用分治来做,另外练习操作符重载

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<string>
#include<vector>
#include<ios>
#define DEBUG(x) cout<<#x<<" = "<<x<<endl
using namespace std;
const int MAXN=220;
struct BigInt{
    char digits[MAXN];
    int len;
    BigInt(){
        memset(digits,0,sizeof(digits));
        len=0;
    };
    bool isOdd()
    {
        int n=digits[0]-0;
        return n%2!=0;
    }
    friend istream& operator>>(istream & in,BigInt &n)
    {
        in>>n.digits;
        n.len=strlen(n.digits);
        reverse(n.digits,n.digits+n.len);
        return in;
    }
    friend ostream& operator<<(ostream &out, const BigInt &n)
    {
        out<<n.digits;
        return out;
    }
    BigInt half()
    {
        BigInt rt;
        int carry=0;
        for(int i=len-1;i>=0 ;i-- ){
            int v=digits[i]-0;
            rt.digits[i]=(v+carry)/2+0;
            carry=(v+carry)%2*10;
        }
        int p=len-1;
        while(rt.digits[p]==0){
            if(p!=0)
            rt.digits[p]=\0;
            p--;
        }
        rt.len=p+1;
        return rt;
    }
};
int lastFourDigit(BigInt n)
{
    if(n.len==1&&n.digits[0]==1)return 2011;
    int lf=lastFourDigit(n.half());
    int t=lf*lf%10000;
    if(n.isOdd())return t*2011%10000;
    return t;
}
int main()
{
//    freopen("in.txt","r",stdin);
    int n;
    cin>>n;
    for(int i=0;i<n ;i++ ){
        BigInt bn;
        cin>>bn;
        int ans=lastFourDigit(bn);
        cout<<ans<<endl;
    }
}

 

2011

标签:lib   fine   bool   span   ==   数据   cst   查看   ace   

原文地址:https://www.cnblogs.com/MalcolmMeng/p/9304612.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!