HDU 3787 A+B(字符串进制转换)

本文介绍了一个简单的编程问题“A+B”,该问题要求从特殊格式的输入中读取两个整数并计算它们的和。文章提供了去除输入中的逗号、转换字符串为整数并考虑正负号的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

A+B

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 4720    Accepted Submission(s): 2690


Problem Description
给定两个整数A和B,其表示形式是:从个位开始,每三位数用逗号","隔开。
现在请计算A+B的结果,并以正常形式输出。
 

Input
输入包含多组数据数据,每组数据占一行,由两个整数A和B组成(-10^9 < A,B < 10^9)。
 

Output
请计算A+B的结果,并以正常形式输出,每组数据占一行。
 

Sample Input
-234,567,890 123,456,789 1,234 2,345,678
 

Sample Output
-111111101 2346912
 
思路:
直接先把逗号去掉,然后把剩余字符串转到10进制加上符号判断就好了!
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn = 100 + 10;
//char s11[maxn],s22[maxn];
char s1[maxn],s2[maxn];
int main(){
    while(scanf("%s%s",s1,s2) == 2){
        int cnt = 0;
        int len1 = strlen(s1);
        int len2 = strlen(s2);
        for (int i = 0; i < len1; ++i) if (s1[i] != ',')s1[cnt++] = s1[i];
        s1[cnt] = 0;
        len1 = cnt;
        cnt = 0;
        for (int i = 0; i < len2; ++i) if (s2[i] != ',')s2[cnt++] = s2[i];
        s2[cnt] = 0;
        len2 = cnt;
        int v1 = 0,v2 = 0;
        int i=0;
        if (s1[i] == '-' || s1[i] == '+')i = 1;
        else i = 0;
        for (; i < len1; ++i) v1 = v1 * 10 + s1[i]-48;
        if (s1[0] == '-')v1=-v1;
        i = 0;
        if (s2[i] == '-' || s2[i] == '+')i = 1;
        else i = 0;
        for (; i < len2; ++i) v2 = v2 * 10 + s2[i]-48;
        if (s2[0] == '-')v2=-v2;
        printf("%d\n",v1+v2);
    }

    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值