• <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>
            我叫張小黑
            張小黑的掙扎生活
            posts - 66,  comments - 109,  trackbacks - 0

            這道題很煩。。我的代碼也很煩。。我想也沒(méi)人愿意會(huì)看

            下面是為我找錯(cuò)誤提供方便的幾個(gè)地方:

            http://blog.csdn.net/tiaotiaoyly/archive/2008/02/11/2087975.aspx
            他總結(jié)得很好。。但是對(duì)我?guī)椭淮蟆!:呛恰!2贿^(guò)可以參考一下
            開(kāi)始幾個(gè)錯(cuò)誤還是自己的數(shù)據(jù)測(cè)出來(lái)的。。
            我最致命的錯(cuò)誤是橫線的輸出
            橫線的長(zhǎng)度其實(shí)取決于上下兩個(gè)數(shù)的長(zhǎng)度的。。我一直以為是取決于最長(zhǎng)數(shù)的長(zhǎng)度

            以下是代碼。。剛好利用這個(gè)題熟悉了一下大數(shù)模板

            #include<iostream>
            #define MaxN 
            3500
            #define max(a,b) (a
            >b?a:b)
            #define max3(a,b,c) (max(a,max(b,c)))
            char str[MaxN],x[MaxN],y[MaxN];
            struct HP
            {
                
            int len,s[MaxN];
            }a,b,c;
            void StrHP(
            const char *s,HP&x)
            {
                x.len
            =(int)strlen(s);
                
            for(int i=1;i<=x.len;i++)
                    x.s[i]
            =s[x.len-i]-'0';
            }
            void Int2HP(
            int inte,HP&x)
            {
                
            if(!inte)
                {
                    x.len
            =1;
                    x.s[
            1]=0;
                    return;
                }
                memset(x.s,
            0,sizeof(x.s));
                
            for(x.len=0;inte>0;)
                {
                    x.s[
            ++x.len]=inte%10;
                    inte
            /=10;
                }
            }
            void Multi(
            const HP a,const HP b,HP &c)
            {
                
            int i,j;
                c.len
            =a.len+b.len;
                
            for(i=1;i<=c.len;i++)
                    c.s[i]
            =0;
                
            for(i=1;i<=a.len;i++)
                    
            for(j=1;j<=b.len;j++)
                        c.s[i
            +j-1]+=a.s[i]*b.s[j];
                
            for(i=1;i<c.len;i++)
                {
                    c.s[i
            +1]+=c.s[i]/10;
                    c.s[i]%
            =10;
                }
                
            while(c.s[i])
                {
                    c.s[i
            +1]=c.s[i]/10;
                    c.s[i]%
            =10;
                    i
            ++;
                }
                
            while(i>1&&!c.s[i])i--;
                c.len
            =i;
            }
            void Plus(
            const HP a,const HP b,HP &c)
            {
                
            int i;
                c.s[
            1]=0;
                
            for(i=1;i<=a.len||i<=b.len||c.s[i];i++)
                {
                    
            if(i<=a.len)
                        c.s[i]
            +=a.s[i];
                    
            if(i<=b.len)
                        c.s[i]
            +=b.s[i];
                    c.s[i
            +1]=c.s[i]/10;
                    c.s[i]%
            =10;
                }
                c.len
            =i-1;
                
            if(c.len==0)
                    c.len
            =1;
            }
            void Substract(
            const HP a,const HP b,HP &c)
            {
                
            for(int i=1,j=0;i<=a.len;i++)
                {
                    c.s[i]
            =a.s[i]-j;
                    
            if(i<=b.len)
                        c.s[i]
            -=b.s[i];
                    
            if(c.s[i]<0)
                    {
                        j
            =1;
                        c.s[i]
            +=10;
                    }
                    
            else j=0;
                }
                c.len
            =a.len;
                
            while(c.len>=1&&!c.s[c.len])c.len--;
                
            if(!c.len)c.len=1;
            }
            void PrintHP(HP 
            &x)
            {
                
            for(int i=x.len;i>=1;i--)
                    printf(
            "%d",x.s[i]);
                
            }
            int main()
            {
                
            //freopen("1.out","w",stdout);
                
            int T,len,len2,i,j;
                char 
            *ptr;
                char oper;
                HP tmp,tmp2;
                scanf(
            "%d",&T);
                
            while(T--)
                {
                    len2
            =len=-1;
                    scanf(
            "%s",str);
                    
            for(ptr=x,i=j=0;str[i];i++)
                    {
                        
            if(str[i]>='0'&&str[i]<='9')
                            ptr[j++]=str[i];
                        
            else
                        {
                            oper
            =str[i];
                            ptr[j]
            ='\0';
                            j=0;
                            ptr
            =y;
                        }
                    }
                    ptr[j]
            ='\0';
                    StrHP(x,a);
                    StrHP(y,b);
                    switch(oper)
                    {
                    
            case '+':
                    case '-':

                        
            if(oper=='+')Plus(a,b,c);
                        else Substract(a,b,c);
                        
            len=max3(a.len,b.len+1,c.len);//帶個(gè)符號(hào)
                        len2
            =max(b.len+1,c.len);
                        
            for(i=0;i<len-a.len;i++)
                            putchar(
            ' ');
                        PrintHP(a);//不帶回車(chē)的print
                        putchar(
            '\n');
                        for(i=0;i<len-b.len-1;i++)
                            putchar(
            ' ');
                        putchar(oper);
                        PrintHP(b);
                        putchar(
            '\n');
                        for(i=0;i<len;i++)
                            i
            <len-len2?putchar(' '):putchar('-');
                        putchar('\n');
                        for(i=0;i<len-c.len;i++)
                            putchar(
            ' ');
                        PrintHP(c);
                        putchar(
            '\n');
                        break;

                    
            case '*':
                        Multi(a,b,c);
                        
            len=max3(a.len,b.len+1,c.len);
                        
                        
            for(i=0;i<len-a.len;i++)
                            putchar(
            ' ');
                        PrintHP(a);
                        putchar(
            '\n');
                        for(i=0;i<len-b.len-1;i++)
                            putchar(
            ' ');
                        putchar('*');
                        PrintHP(b);
                        putchar(
            '\n');
                        Int2HP(b.s[1],tmp);
                        Multi(a,tmp,tmp2);
                        len2
            =max(b.len+1,tmp2.len);
                        
            for(i=0;i<len;i++)
                            i
            <len-len2?putchar(' '):putchar('-');
                        putchar('\n');
                        for(i=0;i<len-tmp2.len;i++)
                            putchar(
            ' ');
                            PrintHP(tmp2);
                            putchar(
            '\n');
                            for(i=2;i<=b.len;i++)
                            {
                                Int2HP(b.s[i],tmp);
                                Multi(a,tmp,tmp2);
                                
            for(j=0;j<len-tmp2.len-i+1;j++)
                                    putchar(
            ' ');
                                PrintHP(tmp2);
                                putchar(
            '\n');
                            }
                        
            if(b.len>1)
                        {
                            len2
            =max(tmp.len+b.len-1,c.len);
                            
            for(i=0;i<len;i++)
                                i
            <len-len2?putchar(' '):putchar('-');
                            putchar('\n');
                            for(i=0;i<len-c.len;i++)
                                putchar(
            ' ');
                            PrintHP(c);
                            putchar(
            '\n');
                        }
                        
                        break;
                    }
                    putchar(
            '\n');
                }
                return 
            0;
            }
                
            posted on 2008-07-15 22:29 zoyi 閱讀(637) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): acm
            歡迎光臨 我的白菜菜園

            <2008年7月>
            293012345
            6789101112
            13141516171819
            20212223242526
            272829303112
            3456789

            常用鏈接

            留言簿(8)

            隨筆分類(lèi)

            隨筆檔案

            文章檔案

            相冊(cè)

            acmer

            online judge

            隊(duì)友

            技術(shù)

            朋友

            搜索

            •  

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            久久www免费人成看片| 久久性精品| 欧美黑人激情性久久| 久久久久久午夜精品| 久久久噜噜噜久久中文字幕色伊伊| 999久久久无码国产精品| 久久久久久久久无码精品亚洲日韩| 国产A三级久久精品| 精产国品久久一二三产区区别| 精品久久久久久久国产潘金莲| | 久久99国产精品成人欧美| 久久精品国产一区二区三区日韩| 久久精品国产亚洲麻豆| 99久久婷婷国产一区二区| 色婷婷久久综合中文久久一本| 国内精品伊人久久久久妇| 久久精品国产99国产精品导航| 人妻精品久久无码专区精东影业| 国产精品禁18久久久夂久| 99热热久久这里只有精品68| 精品久久久久一区二区三区| 亚洲国产精品综合久久一线| 久久人人爽人人爽人人片AV不 | 久久国产精品免费| 久久一区二区免费播放| 国产69精品久久久久观看软件| 久久99精品久久久久久hb无码| 精品国产91久久久久久久a| 日本WV一本一道久久香蕉| 91精品国产高清91久久久久久| 久久99精品久久久久久野外| 一本久久a久久精品vr综合| 精品久久久久久国产| 一本久道久久综合狠狠爱| 精品久久久久久无码国产| 亚洲va久久久噜噜噜久久男同 | 久久精品国产亚洲麻豆| 久久人人爽人人爽人人片AV不| 99久久精品免费国产大片| 亚洲精品无码久久久影院相关影片 |