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

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

?? cintegerz.cpp

?? 自己定義的 class -- CIntegerZ 支持高低精度混合運算。
?? CPP
字號:
#include "stdafx.h"
#include "CIntegerZ.h"

// 0  <===> +0,     -0 不合法
int CIntegerZ::maxlen = MAX_CINTEGERZ_IP_LENGTH;   // 高精度數組長度
int CIntegerZ::nlen   = MAX_CINTEGERZ_IP_LENGTH-1; // 高精度數字最大長度
int CIntegerZ::rrrr   = 10000;   // 不可太大——乘法越界
int CIntegerZ::rlen   = 4;       // 10^n 進位制在此確定

CIntegerZ::CIntegerZ()
{
        memset( ip, 0, sizeof(int)*maxlen );
        ip[0] = bPositive = 1;
}

CIntegerZ::CIntegerZ( int n )
{
        *this = n;
}

CIntegerZ::CIntegerZ( string &s )
{
        *this = s;
}

CIntegerZ::CIntegerZ( char *pc )
{
        string s = pc;
        *this = s;
}

CIntegerZ::~CIntegerZ()
{
}

//  n == 0                                                ////////////////////////
CIntegerZ CIntegerZ::operator=( int n )
{
        memset( ip, 0, sizeof(int)*maxlen );
        if( n < 0 )
        {
                n = -n;
                bPositive = 0;
        }
        else
        {
                bPositive = 1;
        }
        if( n == 0 ) ip[0] = 1;
        while( n )
        {
                ip[++ip[0]]  = n % rrrr;
                n           /= rrrr;
        }
        return *this;
}

// s == "0",  "-0", "0000", "-0000", "0000123", "-00021", "f;aief"  ////////////////
// "++--", "+", "-", "+0", "+143"
CIntegerZ CIntegerZ::operator=( string &s )
{
        memset( ip, 0, maxlen*sizeof(int) );
        ip[0] = 1;
        bPositive = 1;

        int i, j, n=0, con;
        for( i=s.length()-1; i>=0; --i )
        {
                if( (s[i]<'0') || ('9'<s[i]) ) break;
                ++n;
        }
        if( (i>0) || (n==0) )
        {
                return *this;
        }
        
        if( s[0] == '+' )
        {
                s.erase( 0, 1 );
        }
        if( s[0] == '-' )
        {
                bPositive = 0;
                s.erase( 0, 1 );
        }
        if( (s[0]<'0') || ('9'<s[0]) )
        {
                return *this;
        }
        while( (s[0]=='0') && (s.length()>0) ) s.erase( 0, 1 );
        if( s.length() == 0 )
        {
                bPositive = 1;
                return *this;
        }

        con = 1;
        ip[0] = 0;
        for( i=s.length()-rlen; con; i=i-rlen )
        {
                for( con=((j=i)>0); j<0; ++j )
                        ;
                n = 0;
                for( ; j<i+rlen; ++j )
                {
                        n = n * 10 + s[j] - '0';
                }
                ip[++ip[0]] = n;
        }
        return *this;
}

CIntegerZ CIntegerZ::operator=( char *pc )
{
        string s = pc;
        return *this = s;
}

CIntegerZ CIntegerZ::Abs( void )
{
        CIntegerZ c(*this);
        c.bPositive = 1;
        return c;
}

CIntegerZ CIntegerZ::NegativeAbs( void )
{
        CIntegerZ c(*this);
        if( (c.ip[0]==1) && (c.ip[1]==0) )
        {
                c.bPositive = 1;
        }
        else
        {
                c.bPositive = 0;
        }
        return c;
}

string CIntegerZ::CIntZ2Str( void )
{
        string s;
        if( bPositive )
        {
                s = "+";
        }
        else
        {
                s = "-";
        }

        string ts = "";
        int i, k, n;

        n = ip[ip[0]];
        do
        {
                ts += char( n % 10 + '0' );
                n  /= 10;
        }while( n );
        for( i=ts.length()-1; i>=0; --i )
                s += ts[i];

        for( i=ip[0]-1; i>0; --i )
        {
                n = ip[i];
                ts = "0000000";
                k = rlen;
                while( n )
                {
                        ts[--k]  = char( n % 10 + '0' );
                        n       /= 10;
                }
                s += ts.substr( 0, rlen );
        }
        return s;
}

int operator>( CIntegerZ &a, CIntegerZ &b )
{
        return !( a <= b );
}

int operator>( int n,        CIntegerZ &b )
{
        return !( CIntegerZ(n) <= b );
}

int operator>( CIntegerZ &a, int n        )
{
        return !( a <= CIntegerZ(n) );
}

int operator<( CIntegerZ &a, CIntegerZ &b )
{
        return !( a >= b );
}

int operator<( int n,         CIntegerZ &b )
{
        return !( CIntegerZ(n) >= b );
}

int operator<( CIntegerZ &a, int n        )
{
        return !( a >= CIntegerZ(n) );
}

int operator==( CIntegerZ &a, CIntegerZ &b )
{
        if( a.ip[0] != b.ip[0] ) return 0;
        if( a.bPositive != b.bPositive ) return 0;
        
        for( int i=a.ip[0]; i>0; --i )
        {
                if( a.ip[i] != b.ip[i] ) return 0;
        }

        return 1;
}

int operator==( int n,         CIntegerZ &b )
{
        return CIntegerZ(n) == b;
}

int operator==( CIntegerZ &a, int n        )
{
        return a == CIntegerZ(n);
}

int operator>=( CIntegerZ &a, CIntegerZ &b )
{
        if( a.bPositive )
        {
                if( !b.bPositive )      return 1;
                if( a.ip[0] > b.ip[0] ) return 1;
                if( a.ip[0] < b.ip[0] ) return 0;
        }
        else
        {
                if( b.bPositive )       return 0;
                if( a.ip[0] > b.ip[0] ) return 0;
                if( a.ip[0] < b.ip[0] ) return 1;
        }
        
        for( int i=a.ip[0]; i>0; --i )
        {
                if( a.ip[i] > b.ip[i] ) return a.bPositive;
                if( a.ip[i] < b.ip[i] ) return !a.bPositive;
        }

        return 1;
}

int operator>=( int n,         CIntegerZ &b )
{
        return CIntegerZ(n) >= b;
}

int operator>=( CIntegerZ &a, int n        )
{
        return a >= CIntegerZ(n);
}

int operator<=( CIntegerZ &a, CIntegerZ &b )
{
        if( a.bPositive )
        {
                if( !b.bPositive )      return 0;
                if( a.ip[0] > b.ip[0] ) return 0;
                if( a.ip[0] < b.ip[0] ) return 1;
        }
        else
        {
                if( b.bPositive )       return 1;
                if( a.ip[0] > b.ip[0] ) return 1;
                if( a.ip[0] < b.ip[0] ) return 0;
        }
        
        for( int i=a.ip[0]; i>0; --i )
        {
                if( a.ip[i] > b.ip[i] ) return !a.bPositive;
                if( a.ip[i] < b.ip[i] ) return a.bPositive;
        }

        return 1;

}

int operator<=( int n,         CIntegerZ &b )
{
        return CIntegerZ(n) <= b;
}

int operator<=( CIntegerZ &a, int n        )
{
        return a <= CIntegerZ(n);
}

CIntegerZ operator+( CIntegerZ &a, CIntegerZ &b )
{
        CIntegerZ c;
        if( a.bPositive == b.bPositive )
        {
                int i, l=a.ip[0], g=0;
                if( l < b.ip[0] ) l = b.ip[0];
                for( i=1; i<=l; ++i )
                {
                        g       += a.ip[i] + b.ip[i];
                        c.ip[i]  = g % CIntegerZ.rrrr;
                        g       /= CIntegerZ.rrrr;
                }
                while( g )
                {
                        c.ip[++l]  = g % CIntegerZ.rrrr;
                        g         /= CIntegerZ.rrrr;
                }
                c.ip[0] = l;
                c.bPositive = a.bPositive;
                return c;
        }

        if( a.bPositive )
        {
                c = b;
                c.bPositive = 1;
                return a - c;
        }

        c = a;
        c.bPositive = 1;
        return b - c;
}

CIntegerZ operator+( int n,         CIntegerZ &b )
{
        return CIntegerZ(n) + b;
}

CIntegerZ operator+( CIntegerZ &a, int n        )
{
        return a + CIntegerZ(n);
}

CIntegerZ operator-( CIntegerZ &a, CIntegerZ &b )
{
        CIntegerZ c;
        if( a.bPositive == b.bPositive )
        {
                int i, l, bPos=a.bPositive;
                a.bPositive = b.bPositive = 1;
                if( a >= b )
                {
                        c.bPositive = bPos;
                        l = a.ip[0];
                        for( i=1; i<=l; ++i )
                                c.ip[i] = a.ip[i] - b.ip[i];
                }
                else
                {
                        c.bPositive = !bPos;
                        l = b.ip[0];
                        for( i=1; i<=l; ++i )
                                c.ip[i] = b.ip[i] - a.ip[i];
                }
                for( i=1; i<l; ++i )
                {
                        if( c.ip[i] < 0 )
                        {
                                c.ip[i]   += CIntegerZ.rrrr;
                                c.ip[i+1] -= 1;
                        }
                }
                a.bPositive = b.bPositive = bPos;
                while( (c.ip[l]==0) && (l>1) ) --l;
                c.ip[0] = l;
                if( (c.ip[0]==1) && (c.ip[1]==0) ) c.bPositive = 1;
                return c;
        }

        if( a.bPositive )
        {
                c = b;
                c.bPositive = 1;
                return a + c;
        }

        c = b;
        c.bPositive = 0;
        return a + c;
}

CIntegerZ operator-( int n,         CIntegerZ &b )
{
        return CIntegerZ(n) - b;
}

CIntegerZ operator-( CIntegerZ &a, int n       )
{
        return a - CIntegerZ(n);
}

CIntegerZ operator*( CIntegerZ &a, CIntegerZ &b )
{
        CIntegerZ c;
        if( (a==0) || (b==0) ) return c;

        int la=a.ip[0], lb=b.ip[0], i, j;
        for( i=1; i<=la; ++i )
        for( j=1; j<=lb; ++j )
        {
                c.ip[i+j-1] += a.ip[i] * b.ip[j];
                c.ip[i+j]   += c.ip[i+j-1] / CIntegerZ.rrrr;
                c.ip[i+j-1] %= CIntegerZ.rrrr;
        }
        c.ip[0] = i + j;
        while( (c.ip[c.ip[0]]==0) && (c.ip[0]>1) ) c.ip[0] -= 1;
        c.bPositive = ( a.bPositive == b.bPositive );
        return c;
}

CIntegerZ operator*( int n,         CIntegerZ &b )
{
        return CIntegerZ(n) * b;
}

CIntegerZ operator*( CIntegerZ &a, int n        )
{
        return a * CIntegerZ(n);
}

CIntegerZ operator/( CIntegerZ &a, CIntegerZ &b )
{
        CIntegerZ c;
        if( a == 0 ) return c;

        int bPos_a = a.bPositive, bPos_b = b.bPositive;
        a.bPositive = b.bPositive = 1;

        if( a < b )
        {
                a.bPositive = bPos_a;
                b.bPositive = bPos_b;
                return c;
        }

        int i, j, k, n;
        c.ip[0] = a.ip[0] - b.ip[0] + 1;
        for( i=c.ip[0]; i>0; --i )
        {
                n = 0;
                for( k=CIntegerZ.rrrr/10; k>0; k/=10 )
                {
                        for( j=9*k; j>=0; j-=k )
                        {
                                c.ip[i] = n + j;
                                if( c * b <= a )
                                {
                                        n += j;
                                        break;
                                }
                        }
                }
                c.ip[i] = n;
        }

        while( (c.ip[c.ip[0]]==0) && (c.ip[0]>1) ) c.ip[0] -= 1;
        a.bPositive = bPos_a;
        b.bPositive = bPos_b;
        c.bPositive = ( bPos_a == bPos_b );
        return c;
}

CIntegerZ operator/( int n,         CIntegerZ &b )
{
        return CIntegerZ(n) / b;
}

CIntegerZ operator/( CIntegerZ &a, int n        )
{
        return a / CIntegerZ(n);
}

CIntegerZ operator%( CIntegerZ &a, CIntegerZ &b )
{
        return  a - ( ( a / b ) * b );
}

CIntegerZ operator%( int n,         CIntegerZ &b )
{
        return CIntegerZ(n) % b;
}

CIntegerZ operator%( CIntegerZ &a, int n        )
{
        return a % CIntegerZ(n);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人av免费在线观看| 久久国产综合精品| 51精品视频一区二区三区| 精品无码三级在线观看视频| 日韩亚洲欧美在线观看| 国产成人精品免费看| 亚洲欧美一区二区三区极速播放| 欧美中文字幕一区| 久久97超碰国产精品超碰| 亚洲欧美日韩在线不卡| 欧美一区二区久久| 99re6这里只有精品视频在线观看| 一区二区三区波多野结衣在线观看| 7878成人国产在线观看| 成人综合在线观看| 日本女人一区二区三区| 亚洲欧美在线视频| 色婷婷久久综合| 麻豆精品视频在线观看视频| 亚洲日穴在线视频| 久久奇米777| 欧美性极品少妇| 成人一级片在线观看| 136国产福利精品导航| 日韩欧美亚洲一区二区| 91国在线观看| 国产成人一级电影| 亚洲人被黑人高潮完整版| 26uuu另类欧美亚洲曰本| 欧美三级在线看| 国产一区二区精品久久99| 一区二区在线观看不卡| 欧美国产国产综合| 日韩免费观看高清完整版| 91久久精品一区二区三区| 国产精品一区二区免费不卡| 日本成人在线网站| 亚洲国产另类精品专区| 一区精品在线播放| 国产清纯在线一区二区www| 日韩一区二区在线观看| 欧美日韩在线免费视频| 色综合久久天天| 不卡在线观看av| 国产精品一区二区在线播放| 美女在线观看视频一区二区| 天天综合天天做天天综合| 国产精品系列在线| 欧美韩国日本综合| 国产欧美视频一区二区三区| 久久久天堂av| 91精品国产综合久久久久久久久久| 91丨九色丨蝌蚪富婆spa| 成人一级视频在线观看| 国产一区二区三区综合| 奇米色一区二区三区四区| 日韩高清一区二区| 美美哒免费高清在线观看视频一区二区 | 久久久久久久久久久久久女国产乱| 精品精品国产高清a毛片牛牛| 2017欧美狠狠色| 国产精品电影一区二区| 亚洲人成影院在线观看| 天堂成人国产精品一区| 久久97超碰国产精品超碰| 丁香激情综合五月| 欧美主播一区二区三区| 日韩欧美国产综合| 国产精品无人区| 一级女性全黄久久生活片免费| 日日噜噜夜夜狠狠视频欧美人| 国产在线精品不卡| 91美女福利视频| 日韩一区二区精品在线观看| 久久久午夜精品理论片中文字幕| 亚洲天堂成人在线观看| 丝袜美腿成人在线| 大尺度一区二区| 欧美色区777第一页| 精品国产乱码久久久久久久| 中文字幕日韩一区二区| 日本视频在线一区| av电影在线观看完整版一区二区| 777亚洲妇女| 亚洲欧美在线观看| 久久er精品视频| 91久久免费观看| 久久丝袜美腿综合| 午夜精品久久久久久久蜜桃app| 国产精品一二三| 欧美偷拍一区二区| 欧美激情一二三区| 青青草国产精品97视觉盛宴| 成人午夜激情片| 欧美一区二区三区的| 中文字幕永久在线不卡| 美日韩黄色大片| 欧美性受极品xxxx喷水| 欧美激情一区二区三区四区| 日本中文字幕一区二区视频| 99综合电影在线视频| 日韩欧美在线影院| 亚洲第一激情av| 99热这里都是精品| 久久先锋资源网| 视频精品一区二区| 91黄色在线观看| 日本一区二区成人在线| 六月丁香婷婷久久| 欧美日韩精品一区二区三区蜜桃| 亚洲欧洲另类国产综合| 精品制服美女丁香| 日韩一区二区在线免费观看| 亚洲午夜羞羞片| 91黄视频在线| 自拍偷拍欧美精品| 国产成人av电影免费在线观看| 91精品国产欧美一区二区| 一区二区三区电影在线播| av网站一区二区三区| 国产天堂亚洲国产碰碰| 激情综合网av| 日韩免费观看高清完整版| 天天综合日日夜夜精品| 欧美午夜精品久久久久久孕妇| 亚洲人123区| 97精品久久久午夜一区二区三区| 欧美韩国日本综合| 成人激情图片网| 国产精品视频麻豆| 国产成人精品影视| 久久久99精品免费观看| 国产风韵犹存在线视精品| 26uuuu精品一区二区| 国产一区二区三区四| 欧美大片免费久久精品三p| 日韩国产一二三区| 欧美一区二区精美| 免费观看91视频大全| 精品国产一区二区三区四区四 | 日韩免费视频一区二区| 奇米影视一区二区三区| 日韩区在线观看| 久久国产精品免费| 久久奇米777| 国产成人av一区二区| 国产精品国产三级国产| 成人国产免费视频| 一区二区三区中文在线观看| 欧美性受xxxx| 美女看a上一区| 久久日一线二线三线suv| 国产suv精品一区二区三区| 国产精品对白交换视频| 欧美中文字幕不卡| 午夜电影久久久| 欧美一级日韩不卡播放免费| 蓝色福利精品导航| 欧美国产欧美综合| av中文一区二区三区| 亚洲综合另类小说| 欧美一级免费大片| 国产精品一区二区久久不卡 | 亚洲国产成人一区二区三区| 91在线视频播放| 亚洲成人免费av| 精品国产一区a| 成人黄色小视频| 亚洲国产裸拍裸体视频在线观看乱了| 欧美一区二区三区视频在线| 六月丁香婷婷久久| 中文字幕一区二区三区四区| 欧美日韩精品一区二区三区四区 | 国产色产综合产在线视频| 91亚洲国产成人精品一区二三 | 午夜免费久久看| 国产亚洲欧美日韩在线一区| 99久久精品免费看国产| 偷窥少妇高潮呻吟av久久免费| 久久蜜桃av一区精品变态类天堂| 99精品一区二区| 麻豆免费精品视频| 亚洲啪啪综合av一区二区三区| 欧美精品第1页| 99免费精品视频| 久久精品国产精品亚洲红杏| 亚洲色图制服丝袜| 精品久久五月天| 91国偷自产一区二区三区成为亚洲经典 | 久久99久久久欧美国产| 日韩毛片视频在线看| 欧美mv日韩mv亚洲| 欧美午夜一区二区| 高清不卡在线观看| 青青国产91久久久久久 | 国产伦精品一区二区三区免费迷 | 极品少妇xxxx精品少妇| 亚洲在线视频一区| 国产精品女主播在线观看| 欧美一级爆毛片|