HDOJ1002

3 篇文章 0 订阅
好笨好笨,做这道题用了好长时间,结果还是没有做出来。。。。
#include<iostream>                
#include<string>                          //代码是xuezhongfenfei的,转载来用用
using namespace std;
int main()
{
  int n,m,t,s,i,j,k,p,c[1005];
  char a[1005],b[1005];
  cin>>n;
  for(p=1;p<=n;p++)
  {
        if(p!=1)
            cout<<endl cin="">>a>>b;
        cout<<"Case "<<p<<":"<<endl;
        cout<<a<<" + "<<b<<" = "; 
        m=strlen(a);
        t=strlen(b);
        if(m>t)
               s=m;
        else
               s=t;
        for(i=0;i<m;i++)                                        
              a[i]=a[i]-'0';                       //这是自己第一点解决不了的问题,对ASCII不熟悉。
        for(i=0;i<t;i++)         //这里面还有一个问题就是char的存储问题,几次试验下来输出都是乱码,头疼了一会
              b[i]=b[i]-'0';
        for(i=0;i<=s;i++)
              c[i]=0;
         i=m-1;j=t-1;k=s;
         for(;(i>=0)&&(j>=0);k--)
         {
               if(c[k]+a[i]+b[j]<=9)            //对于进制这点自己用了另外一种不怎么美观的方法,N个if()else过去
                  c[k]+=a[i]+b[j];             //虽然也解决了问题,但代码量不仅大了,也不优雅
               else
               {
                    c[k]=(c[k]+a[i]+b[j])%10;
                    c[k-1]++;
                }
               i--;
               j--;
         }
         while(i>=0)  
         {
            if(c[k]+a[i]>9) 
                {c[k]=(c[k]+a[i])%10;c[k-1]++;}
            else
                 c[k]=c[k]+a[i];
            k--;i--;
         }
          while(j>=0) 
           {
              if(c[k]+b[j]>9) 
                {c[k]=(c[k]+b[j])%10;c[k-1]++;}
              else
                c[k]=c[k]+b[j];
               k--;j--;
            } 
           if(c[0]!=0)
               cout<<"1";
           for(i=1;i<=s;i++)
              cout<<c[i];
              cout<<endl;
    }
  return 0; 
}
</endl></string></iostream>

果然是菜鸟啊,刚刷OJ就被完败了。。思路不全面,还需要历练呀
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值