• <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)論排行榜

            国产精品久久久久久福利漫画| 久久婷婷五月综合色奶水99啪| 青青草国产精品久久| A级毛片无码久久精品免费| 久久se精品一区二区影院| 久久成人永久免费播放| 国产免费久久精品99re丫y| 亚洲午夜久久久久妓女影院| 精品久久久久久无码中文字幕一区| 精品久久一区二区三区| 久久无码精品一区二区三区| 久久精品国产亚洲αv忘忧草| 蜜臀av性久久久久蜜臀aⅴ| 狠狠色丁香婷婷综合久久来| 国产精品亚洲美女久久久| 久久人人超碰精品CAOPOREN| 久久成人国产精品免费软件| 国产国产成人精品久久| 久久综合日本熟妇| 久久大香香蕉国产| 久久精品国产精品亚洲下载| 久久久久国产精品嫩草影院| 国产美女久久久| 99久久国产精品免费一区二区| 日韩精品国产自在久久现线拍| 2021国产精品久久精品| 99久久99久久精品国产| 久久久噜噜噜www成人网| 久久精品国产欧美日韩| 久久国产成人精品麻豆| 伊人久久大香线蕉综合影院首页| 国产亚洲精午夜久久久久久| 久久婷婷成人综合色综合| 精品久久久久久无码不卡| 麻豆精品久久精品色综合| 色综合久久综合中文综合网| 国产成人综合久久久久久| 久久亚洲精品成人AV| 久久婷婷国产剧情内射白浆| 久久99久久无码毛片一区二区| 九九久久99综合一区二区|