亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 高精度.txt

?? 上次站長沒用!今次打包幾個ACM的資料在上傳
?? TXT
?? 第 1 頁 / 共 2 頁
字號:
//高精度最終較完美解[url]http://acm.zjnu.cn/show.asp?tab=arithmetic&id=67[/url]
//done by smallrain . 05,4,7

#include<iostream>
#include<fstream>
#include<string>
#include"time.h"
using namespace std;


struct cresi                                    //此結構體用來存余數,并打印
{
    int *p_resi;                                //指向內存中存放余數的連續空間
    int len_resi;                                //余數存放空間的長度
    void print()                                //打印余數
    {
        for(int i=len_resi-1;i>=0;i--)
        {
            cout<<p_resi[i];
        }
        cout<<endl;
    }
};///:p

struct cresi resi;                              //定義結構體全局變量,用于處理高精度整數除法的余數
    
class cata                                      //定義高精度類,可實現任意大數的四則運算
{
public:

    cata(int Max=10);
    ~cata();
    bool empty() const;

    int length() const;                          //存放高精度數的數組的長度

    void printcata(ofstream &out) const;
    void pricata();                              //打印高精度數
    void del_first();                            //刪除高精度數組的首單元

    cata &getdata(const string &x);              //由于數據讀入用的是string,把字符串轉化為整形數組,并且完成逆置

    cata &operator +(const cata &y);            //實現高精度的加法,結果存放于被加數中,且返回被加數對象的指針
    cata &operator -(const cata &y);            //實現高精度的減法,結果存放于被減數中,且返回被減數對象的指針
    cata &operator *(const cata &y);            //實現高精度的乘法,結果存放于被乘數中,且返回被乘數對象的指針
    cata &operator /(const cata &y);            //實現高精度的除法,結果存放于被除數中,且返回被除數對象的指針
    cata &operator =(const cata &y);            //重載賦值運算符,用以實現cata對象的賦值

    friend bool dispose_boundary(const cata &m,const cata &n);        //處理邊界情況
    friend int compare_cata(const cata &x,const cata &y);            //比較兩個高精度數的大小
    friend void result(cata &m,cata &n,cata &result_combination,cata &result_catalan); //產生大組合數結果和catalan數結果
    friend void boundary_result(cata &m,cata &result_combination,cata &result_catalan); //在邊界條件下產生上述結果

private:
    int n;                                      //存放高精度數的數組的長度
    int displacement;                            //數組偏移量,用于除法移位
    int MaxSize;
    int *data;                                  //用于申請動態空間,指向存放高精度數的數組
};///:p

inline cata::cata(int Max)                      //構造函數
{
    MaxSize=Max;
    data=new int[MaxSize];
    n=0;
    displacement=0;
}///:p

inline cata::~cata()                            //析構函數
{
    delete [] data;
}///:p

inline bool cata::empty() const                  //判斷是否非空,在本程序中無用
{
    return n==0;
}///:p

inline bool dispose_boundary(const cata &m,const cata &n)
{
    if(((1==n.n)&&(n.data[0]==0))||compare_cata(m,n)==2)
    {
        return false;
    }
    else
    {
        return true;
    }
}///:p

inline int cata::length() const                  //返回高精度數的長度,即是數組長度
{
    return n;
}///:p

inline void cata::del_first()                    //刪除存放高精度數的數組的首單元,在除法中運用
{
    /*for(int i=1;i<n;i++)
    {
        data[i-1]=data[i];
    }*/
    displacement+=1;
    n-=1;
}///:p

void cata::pricata()                            //打印高精度數到控制臺
{
    for(int i=n-1;i>=0;i--)
    {
        cout<<data[i];
    }
    cout<<endl;
}///:p

cata &cata::getdata(const string &str)          
{
    int len_int=str.length(),len_str=len_int;    
    if(this->n!=len_int)
    {
        delete [] data;
        data=new int [len_int];
        if(NULL==data)
        {
            cout<<"the error take place in getdata()"<<endl;
            exit(1);
        }
    }
    for(int j=0;j<len_int;j++)                  //完成string到int型數組的轉換,并且逆置
    {
        data[j]=(int)(str[len_str-1-j]-48);
    }
    n=len_int;
    return *this;
}///:p

cata &cata::operator +(const cata &y)
{
    int len_x=length(),len_y=y.length();
    int len_max=len_x>len_y? len_x:len_y,len_min=len_x<len_y? len_x:len_y;
    int *result=new int[len_max+1];            //result存放高精度加法結果
    for(int i=0;i<len_max+1;i++)                //將result全部置0
    {
        result[i]=0;
    }
    int carry=0,temp_1,temp_2;                  //carry為進位
    for(i=0;i<len_min;i++)                      //按位加,分兩步做
    {
        temp_2=temp_1=data[i]+y.data[i]+carry;
        carry=temp_1/10;
        if(carry)
            result[i]=temp_2%10;
        else result[i]=temp_2;
    }
    if(len_x>=len_y)
    {
        for(i=len_min;i<len_max;i++)
        {
            temp_2=temp_1=data[i]+result[i]+carry;
            carry=temp_1/10;
            if(carry)
            {
                result[i]=temp_2%10;
            }
            else 
            {
                result[i]=temp_2;
            }
        }
    }
    else
    {
        for(i=len_min;i<len_max;i++)
        {
            temp_2=temp_1=y.data[i]+result[i]+carry;
            carry=temp_1/10;
            if(carry)
            {
                result[i]=temp_2%10;
            }
            else 
            {
                result[i]=temp_2;
            }
        }
    }
    if(carry)
    {
        result[len_max]=carry;
        n=len_max+1;
    }
    else
    {
        n=len_max;
    }
    int *temp=result;                            //指針的交換
    result=data;                                
    data=temp;
    delete [] result;
    return *this;
}///:p

cata &cata::operator -(const cata &y)
{
    int len_max=length(),len_y=y.length();
    int *result=new int [len_max];              //result用于存放高精度減法的結果
    if(NULL==result)
    {
        cout<<"the error take place in -"<<endl;
        exit(1);
    }
    for(int i=0;i<len_max;i++)
    {
        result[i]=0;
    }
    int borrow=0,temp;                            //borrow位借
    int displace=y.displacement;
    for(i=0;i<len_y;i++)                        //按位減,分兩步做
    {
        temp=data[i]+10-y.data[i+displace]-borrow;
        if(temp>=10)
        {
            temp=temp-10;
            borrow=0;
        }
        else
        {
            borrow=1;
        }
        result[i]=temp;
    }
    for(int j=len_y;j<len_max;j++)
    {
        temp=data[j]+10-result[j]-borrow;
        if(temp>=10)
        {
            temp=temp-10;
            borrow=0;
        }
        else
        {
            borrow=1;
        }
        result[j]=temp;
    }
    n=len_max;
    i=1;
    while(result[n-i]==0&&i<n)                        //由于減法會在高位產生0,i的回溯相當于去掉無用的高位0
    {
        i++;
    }
    n=n-i+1;                                          //i回溯后,重新計算n
    int *temp_sub=result;                              //交換指針,保證結果實在*this對象中
    result=data;
    data=temp_sub;
    delete [] result;
    return *this;
}///:p

cata &cata::operator *(const cata &y)
{
    int len_x=length(),len_y=y.length();
    int len_z=len_x+len_y;
    int *result=new int [len_z];                      //result存放高精度*的結果
    int *temp=new int [len_z];
    if(NULL==result||NULL==temp)
    {
        cout<<"the error take place in *"<<endl;
        exit(1);
    }
    for(int j=0;j<len_z;j++)
    {
        result[j]=0;
    }    
    int carry,temp1,temp2;                            //carry為進位
    for(j=0;j<len_y;j++)                              //模擬手工方法,實現乘法
    {
        for(int i=0;i<len_z;i++)
        {
            temp[i]=0;
        }
        carry=0;
        for(i=0;i<len_x;i++)
        {
            temp2=temp1=data[i]*y.data[j]+carry;
            carry=temp1/10;
            if(carry)
            {
                temp[i+j]=temp2%10;
            }
            else
            {
                temp[i+j]=temp2;
            }
        }
        if(carry)
        {
            temp[len_x+j]=carry;
        }
        int carry_add=0,temp1_add,temp2_add;          //乘法中的加法
        for(i=0;i<len_z;i++)
        {
            temp2_add=temp1_add=temp[i]+result[i]+carry_add;
            carry_add=temp1_add/10;
            if(carry_add)
            {
                result[i]=temp2_add%10;
            }
            else
            {
                result[i]=temp2_add;
            }
        }
    }
    this->n=len_z;
    int i=1;
    while(result[n-i]==0&&i<n) 
    {
        i++;
    }
    n=n-i+1;
    int *temp_change=result;                          //交換指針
    result=data;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品xxxxbbbb| zzijzzij亚洲日本少妇熟睡| 国产午夜精品久久久久久免费视 | 91免费版在线| 成人妖精视频yjsp地址| 国产美女精品一区二区三区| 久久av老司机精品网站导航| 韩国成人在线视频| 国产成人亚洲综合a∨婷婷图片 | 欧美r级在线观看| 2021国产精品久久精品| 久久综合色之久久综合| 国产欧美一二三区| 中文字幕一区二区三区四区不卡| 国产精品麻豆网站| 亚洲欧美偷拍卡通变态| 亚洲精品国产a| 天天做天天摸天天爽国产一区| 亚洲国产一区二区a毛片| 婷婷综合五月天| 精品影院一区二区久久久| 高清国产一区二区| 色网综合在线观看| 欧美一级一区二区| 中文字幕国产一区| 亚洲男帅同性gay1069| 亚洲成av人影院在线观看网| 美女尤物国产一区| 成人美女视频在线看| 欧美图片一区二区三区| 精品久久久久香蕉网| 亚洲色图另类专区| 日日摸夜夜添夜夜添亚洲女人| 国产做a爰片久久毛片| 91免费视频大全| 欧美电影免费提供在线观看| 国产精品免费久久久久| 亚洲福利国产精品| 国产精品自拍一区| 欧美午夜理伦三级在线观看| 日韩美女在线视频| 亚洲免费观看高清在线观看| 久久精品99国产精品日本| 99精品黄色片免费大全| 91精品婷婷国产综合久久竹菊| 国产精品日韩精品欧美在线| 日韩黄色在线观看| 91视频www| 精品日产卡一卡二卡麻豆| 亚洲美女免费视频| 国产aⅴ综合色| 日韩天堂在线观看| 亚洲午夜国产一区99re久久| 国产成人精品一区二区三区网站观看 | 亚洲视频免费观看| 国产一区二区电影| 91麻豆精品国产91久久久使用方法 | 亚洲精品中文在线| 粉嫩av亚洲一区二区图片| 337p亚洲精品色噜噜狠狠| ●精品国产综合乱码久久久久 | 国产一本一道久久香蕉| 欧美群妇大交群的观看方式 | 欧美性受xxxx黑人xyx性爽| 欧美激情综合五月色丁香小说| 日本中文字幕不卡| 欧美视频在线不卡| 亚洲精品日产精品乱码不卡| 成人精品国产福利| 日本一区二区三区电影| 狠狠v欧美v日韩v亚洲ⅴ| 91精品国产一区二区| 亚洲成av人影院在线观看网| 欧美日韩一级二级三级| 亚洲国产毛片aaaaa无费看| 91日韩精品一区| 亚洲欧美一区二区三区极速播放| 91在线国产观看| 日韩久久一区二区| 日本高清免费不卡视频| 曰韩精品一区二区| 欧美日韩激情一区二区三区| 亚洲国产日韩a在线播放| 欧美精三区欧美精三区| 亚洲h在线观看| 91精品在线免费| 激情五月激情综合网| 精品国产伦理网| 国产mv日韩mv欧美| 亚洲人成精品久久久久久| 在线视频你懂得一区| 亚洲成年人网站在线观看| 欧美福利视频导航| 精品一区二区在线免费观看| 国产网红主播福利一区二区| av不卡在线播放| 午夜精品一区二区三区三上悠亚| 在线播放亚洲一区| 国内精品免费**视频| 国产欧美1区2区3区| 色噜噜狠狠一区二区三区果冻| 图片区小说区国产精品视频| 精品对白一区国产伦| 成人av第一页| 亚洲6080在线| 久久久久国产免费免费| 色综合天天综合狠狠| 日韩精品每日更新| 欧美成人性福生活免费看| 国产九九视频一区二区三区| 亚洲免费观看高清完整版在线| 在线成人小视频| 国产成人av一区二区三区在线 | 亚洲天堂中文字幕| 7777精品伊人久久久大香线蕉经典版下载 | 99久久国产免费看| 午夜精品久久久久影视| 国产夜色精品一区二区av| 欧美三级午夜理伦三级中视频| 久久99久久99小草精品免视看| 中文字幕亚洲不卡| 正在播放亚洲一区| 91免费视频网址| 国产精品资源网| 婷婷夜色潮精品综合在线| 国产精品美女久久久久高潮| 91精品国产91久久久久久最新毛片| 粉嫩一区二区三区性色av| 日韩激情一二三区| 一区二区日韩电影| 国产精品水嫩水嫩| 26uuu成人网一区二区三区| 欧美视频一区在线| 粉嫩在线一区二区三区视频| 久久福利资源站| 亚洲国产一二三| 亚洲女同ⅹxx女同tv| 中文字幕va一区二区三区| 日韩精品一区二区三区四区| 在线视频国内一区二区| jizz一区二区| 成人黄色一级视频| 国产成人综合亚洲91猫咪| 蜜桃视频免费观看一区| 午夜精品福利久久久| 一区二区激情视频| 亚洲人成网站影音先锋播放| 亚洲欧美中日韩| 中文字幕欧美激情| 中文字幕国产一区| 欧美韩日一区二区三区四区| 久久亚洲一区二区三区四区| 日韩欧美一二三四区| 日韩欧美激情在线| 精品人在线二区三区| 精品美女在线播放| 久久久亚洲欧洲日产国码αv| 精品国产一区二区三区久久久蜜月 | 亚洲综合一区二区三区| 亚洲品质自拍视频网站| 亚洲人成在线播放网站岛国| 亚洲摸摸操操av| 一卡二卡欧美日韩| 亚洲大片免费看| 香港成人在线视频| 日韩不卡一区二区三区| 日本午夜精品视频在线观看| 蜜桃av一区二区| 国产精品中文字幕日韩精品 | 日韩美女视频19| 亚洲综合视频在线观看| 午夜精品一区在线观看| 麻豆专区一区二区三区四区五区| 精品一区二区三区免费| 大桥未久av一区二区三区中文| 成人毛片老司机大片| 欧美在线观看视频一区二区| 欧美私人免费视频| 欧美电影免费观看高清完整版| 国产欧美日韩精品a在线观看| 亚洲人成网站色在线观看| 丝袜亚洲精品中文字幕一区| 激情综合网最新| 成人手机在线视频| 欧美日韩在线免费视频| 日韩欧美国产wwwww| 国产精品婷婷午夜在线观看| 亚洲在线观看免费| 久久 天天综合| 99re66热这里只有精品3直播 | 综合av第一页| 蜜臀av亚洲一区中文字幕| 波波电影院一区二区三区| 91精品办公室少妇高潮对白| 欧美一级国产精品| 亚洲理论在线观看| 国产一区二区三区观看| 欧美体内she精高潮| 欧美韩国日本不卡| 免费观看在线色综合|