幽幽
 
posts - 51,  comments - 28,  trackbacks - 0

A + B Problem II
计算两个1000位以内整数的和
输入
2
1 2
112233445566778899 998877665544332211

输出
Case 1:
1 + 2 = 3

Case 2:
112233445566778899 + 998877665544332211 = 1111111111111111110

#include <iostream>
 
using namespace std;

int main()
{
    
int T, count_T;
    
char a[1001], b[1001], ans[1002];
    cin 
>> T;
    
for(count_T=1; count_T <= T; count_T++{
        cin 
>> a >> b;
        
if(count_T==1{
            cout 
<< "Case " << count_T << ":" << endl;
        }

        
else {
            cout 
<< "\nCase " << count_T << ":" << endl;
        }

        cout 
<< a << " + " << b << " = ";
        
int la=strlen(a)-1, lb=strlen(b)-1, sign=0, i;
        
for(i=0;la>=0 && lb>=0; la--,lb--,i++{
            sign 
+= a[la] + b[lb] - '0' - '0';
            ans[i] 
= sign % 10;
            sign 
/= 10;
        }

        
for(; la>=0; la--, i++{
            sign 
+= a[la] - '0';
            ans[i] 
= sign % 10;
            sign 
/= 10;
        }

        
for(; lb>=0; lb--, i++{
            sign 
+= b[lb] - '0';
            ans[i] 
= sign % 10;
            sign 
/= 10;
        }

        
if(sign) {
            ans[i] 
= sign;
            i
++;
        }

        
for(i--; i>=0; i--{
            cout 
<< (char)(ans[i] + '0');
        }

        cout 
<< endl;
    }

    
return(0);
}

posted on 2008-02-12 15:38 幽幽 阅读(974) 评论(2)  编辑 收藏 引用 所属分类: HDOJ日志

FeedBack:
# re: hdoj1002
2008-08-21 19:59 | zhou
帮我看看,我哪里错了?
#include<stdio.h>
#include<string.h>
int main()
{
int T, n, la, lb, i;
char a[1001], b[1001];
int c[1002];
scanf("%d", &T);
for(n = 1; n <= T; n++)
{
scanf("%s %s", &a, &b);
if(n == 1)
{
printf("Case %d:\n", n);
printf("%s + %s = ", a, b);
}
else
{
printf("\nCase %d:\n", n);
printf("%s + %s = ", a, b);
}
la = strlen(a) - 1; lb = strlen(b) - 1;
memset(c, 0, sizeof(c));
for(i = 0; la >= 0 &&lb >= 0; la--, lb--, i++)
{
c[i] = a[la] - '0' + b[lb] - '0';
if(c[i] > 9)
{
c[i+1] += c[i]/10;
c[i] %= 10;
}
}
for( ;la >= 0; la--, i++)
{
c[i] = c[la] - '0';
if(c[i] > 9)
{
c[i+1] += c[i]/10;
c[i] %= 10;
}
}
for( ;lb >= 0; lb--, i++)
{
c[i] = c[lb] - '0';
if(c[i] > 9)
{
c[i+1] += c[i]/10;
c[i] %= 10;
}
}
for(i--; i >= 0; i--)
printf("%d", c[i]);
printf("\n");
}
return 0;
}  回复  更多评论
  
# re: hdoj1002
2008-08-25 08:20 | 幽幽
以后这种题,还是用java来做吧.........  回复  更多评论
  

只有注册用户登录后才能发表评论。
相关文章:
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理



<2024年4月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

常用链接

留言簿(5)

随笔分类(35)

随笔档案(51)

文章分类(3)

文章档案(3)

相册

我的链接

搜索

  •  

最新评论

阅读排行榜

评论排行榜