Codeup墓地链接:http://codeup.cn/
本题链接:http://codeup.cn/problem.php?cid=100000575&pid=1
问题描述:
问题 B: A+B
时间限制: 1 Sec 内存限制: 32 MB
提交: 2718 解决: 1255
[提交][状态][讨论版][命题人:外部导入]
题目描述
给定两个整数A和B,其表示形式是:从个位开始,每三位数用逗号","隔开。
现在请计算A+B的结果,并以正常形式输出。
输入
输入包含多组数据数据,每组数据占一行,由两个整数A和B组成(-10^9 < A,B < 10^9)。
输出
请计算A+B的结果,并以正常形式输出,每组数据占一行。
样例输入
-234,567,890 123,456,789 1,234 2,345,678
样例输出
-111111101 2346912
代码:
#include<bits/stdc++.h>
using namespace std;
int main(){
string N,M;
N.resize(35); //设定N的长度
M.resize(35);
while(scanf("%s",&M[0])!=EOF&&scanf("%s",&N[0])!=EOF){ //读取到文件末尾时,才会返回EOF
int n,m;
while((n=N.find(','))!=-1){ //字符串的find函数返回首次匹配的','的位置
N.erase(n,1); //从字符串中删除该字符
}
while((n=M.find(','))!=-1){
M.erase(n,1);
}
long long n1,n2; //A和B范围在10的9次方,为防止溢出使用long long。其实用long也是可以的。
istringstream is; //将字符串转换为数字
is.str(N);
is>>n1; //转换为整数
is.str(M);
is>>n2;
printf("%lld\n",n1+n2);
}
return 0;
}
解析:读取字符串,用char数组或者string,前提是让scanf知道你的长度或者大小。
内存:
提交记录里内存最小的:
代码:
#include <stdio.h>
#include <string.h>
#define maxn 100000
int to_number(char a[])
{
int sum = 0;
int len = strlen(a);
for(int i = 0; i < len; i++)
{
if(a[i] >= '0' && a[i] <= '9')
sum = sum * 10 + a[i] - '0';
}
if(a[0] == '-')
sum = -sum;
return sum;
}
int main()
{
char CA[maxn], CB[maxn];
int A, B;
while(scanf("%s %s", CA, CB) != EOF)
{
A = B = 0;
A = to_number(CA);
B = to_number(CB);
printf("%d\n", A + B);
}
return 0;
}
感谢阅读!!!有什么问题可以评论哦。