• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            我希望你是我獨家記憶

            一段永遠封存的記憶,隨風(fēng)而去
            posts - 263, comments - 31, trackbacks - 0, articles - 3
               :: 首頁 :: 新隨筆 ::  :: 聚合  :: 管理

            SGU 112 高精度

            Posted on 2010-11-30 14:53 Hero 閱讀(474) 評論(0)  編輯 收藏 引用 所屬分類: 代碼如詩--ACM
              1 //SGU 112  .CPP_VS Accepted 0 ms 0 kb 
              2
              3#include <iostream>
              4#include <cstdlib>
              5#include <string.h>
              6#include <string>
              7
              8using namespace std ;
              9typedef long long llong ;
             10
             11const int size = 200 ;
             12const int base = 100 ;
             13const int cap = 500 ;
             14
             15struct Bigint {
             16    int len ; int data[cap] ;
             17
             18    Bigint():len(0{}
             19    Bigint( int x ):len(0{//小整數(shù)賦值//
             20        for( ; x>0; x/=base) data[len++= x % base ; 
             21    }

             22    Bigint( const Bigint &x ):len(x.len) {//Bigint拷貝賦值//
             23        memcpy( data, x.data, len*sizeof(data[0]) ) ;
             24    }

             25    Bigint &operator=const Bigint x )
             26    {
             27        len = x.len ;
             28        memcpy( data, x.data, len*sizeof(data[0]) ) ;
             29        return *this ;
             30    }

             31    int &operator[]( int posi ) {
             32        return data[posi] ;
             33    }

             34    int operator[]( int posi )const {
             35        return data[posi] ;
             36    }

             37}
            ;
             38
             39int cmp( const Bigint &A, const Bigint &B )
             40{
             41    if( A.len != B.len ) return A.len > B.len ? 1 : - 1 ;
             42    int i ; for( i=A.len-1; i>=0&&A[i]==B[i]; i-- ) ;
             43
             44    if( i < 0 ) return 0 ;//相等//
             45    return A[i] > B[i] ? 1 : -1 ;
             46}

             47
             48Bigint operator+const Bigint &A, const Bigint &B )
             49{
             50    int i ; int carry = 0 ; Bigint R ;
             51    for( i=0; i<A.len||i<B.len||carry>0; i++ )
             52    {
             53        if( i < A.len ) carry += A[i] ;
             54        if( i < B.len ) carry += B[i] ;
             55        R[i] = carry % base ; carry = carry / base ;
             56    }

             57    R.len = i ;  return R ;
             58}

             59
             60Bigint operator-const Bigint &A, const Bigint &B )
             61{
             62    int i ; int carry = 0 ; Bigint R ;
             63    R.len = A.len ;
             64    for( i=0; i<R.len; i++ )
             65    {
             66        R[i] = A[i] - carry ; if( i < B.len ) R[i] -= B[i] ;
             67        if( R[i] < 0 )    { carry = 1 ; R[i] += base ; }
             68        else carry = 0 ;
             69    }

             70    while( R.len>0&&0==R[R.len-1] ) R.len-- ;//消除相減導(dǎo)致的前綴0
             71
             72    return R ;
             73}

             74
             75Bigint operator*const Bigint &A, const int &B )
             76{
             77    int i ; llong carry = 0 ; Bigint R ;
             78    for( i=0; i<A.len||carry>0; i++ )
             79    {
             80        if( i<A.len ) carry += (llong)(A[i])*B ;
             81        R[i] = carry % base ; carry = carry / base ;
             82    }

             83    R.len = i ;    return R ;
             84}

             85Bigint operator/const Bigint &A, const int &B )
             86{
             87    int i ; llong carry = 0 ; Bigint R ;
             88    for( i=A.len-1; i>=0; i-- )
             89    {
             90        carry += A[i] ;
             91        R[i] = carry / B ; 
             92        carry = carry - R[i]*B ; carry = carry * base ;
             93    }

             94    R.len = A.len ; while( R.len>0&&0==R[R.len-1] ) R.len-- ;//消除前綴0
             95
             96    return R ;
             97}

             98llong mod( const Bigint &A, const int &B )
             99{
            100    int i ; llong carry = 0 ;
            101    for( i=A.len-1; i>=1; i-- )
            102    {
            103        carry += A[i] ; carry = carry % B ; carry *= base ;
            104    }

            105    carry = carry + A[i] ; carry = carry % B ;
            106
            107    return carry ;
            108}

            109
            110istream &operator>>( istream &in, Bigint &x )
            111{
            112    char ch ;
            113    for( x=0in>>ch; )
            114    {
            115        x = x*10 + (ch-'0') ;
            116        ifin.peek() <= ' ' ) break ;//注意是空格//
            117    }

            118    return in ;
            119}

            120ostream &operator<<( ostream &outconst Bigint &x )
            121{
            122    out << ( 0==x.len ? 0 : x[x.len-1] ) ;
            123    forint i=x.len-2; i>=0; i-- )
            124        forint j=base/10; j>0; j/=10 )
            125            out << x[i]/j%10 ;
            126
            127    return out ;
            128}

            129
            130void mytostr( string &str, const Bigint &x )
            131{
            132    str.clear() ; char temp[15] ;
            133    if0 == x.len ) str += '0' ;
            134    else
            135    {
            136        sprintf( temp, "%d", x[x.len-1] ) ;
            137        str += temp ;
            138
            139        //int len = strlen(temp) ;
            140        //for( int i=0; i<len; i++ ) str += temp[i] ;
            141    }

            142
            143    forint i=x.len-2; i>=0; i-- )
            144        forint j=base/10; j>0; j/=10 )
            145            str += char(x[i]/j%10+'0') ;
            146
            147    str.reserve() ;
            148}

            149
            150int main()
            151{
            152    int ina, inb;
            153    Bigint Bint0( 0 ) ;
            154    Bigint Bint1( 1 ) ;
            155
            156    while( cin >> ina >> inb )
            157    {
            158        Bigint A(1);
            159        forint i=1; i<=inb; i++ )
            160        {
            161            A = A * ina;
            162        }

            163
            164        Bigint B(1);
            165        forint i=1; i<=ina; i++ )
            166        {
            167            B = B * inb;
            168        }

            169
            170        if( cmp(A, B) >=0 )
            171        {
            172            cout << A-<< endl;
            173        }
             
            174        else
            175        {
            176            cout << "-" << B-<< endl;
            177        }

            178    }

            179
            180    return 0 ;
            181}

            182
            亚洲国产精品人久久| 区亚洲欧美一级久久精品亚洲精品成人网久久久久 | 国产 亚洲 欧美 另类 久久| 人人狠狠综合久久亚洲婷婷| 欧美久久一级内射wwwwww.| 国内精品久久久久影院薰衣草| 久久婷婷成人综合色综合| 97超级碰碰碰碰久久久久| 久久精品国产亚洲综合色| 中文精品久久久久人妻| 久久久久亚洲爆乳少妇无 | 国产亚洲美女精品久久久2020| 久久嫩草影院免费看夜色| 久久国产高清一区二区三区| 色欲久久久天天天综合网 | 久久伊人亚洲AV无码网站| 久久精品成人一区二区三区| 天堂久久天堂AV色综合| 亚洲va国产va天堂va久久| 久久久无码一区二区三区| 久久综合久久鬼色| 亚洲国产成人久久综合碰| 狠狠色丁香久久婷婷综合图片| 亚洲国产精品久久66| 99热成人精品免费久久| 理论片午午伦夜理片久久| 久久国产劲爆AV内射—百度| 久久久久亚洲AV成人网人人软件| 久久免费香蕉视频| 亚洲中文久久精品无码| 99精品久久久久中文字幕| 麻豆亚洲AV永久无码精品久久| 久久国产精品77777| 91精品国产91久久久久久| 人妻精品久久久久中文字幕| 伊人久久大香线蕉AV色婷婷色| 蜜臀av性久久久久蜜臀aⅴ麻豆| 亚洲国产精品一区二区久久| 性做久久久久久免费观看| 久久亚洲精品成人AV| 久久毛片免费看一区二区三区|