B1016 部分A+B (15分)

B1016 部分A+B (15分)

输入格式:

输入在一行中依次给出 A、DA、B、DB,中间以空格分隔,其中
\(0<A,B<10^10\)

输出格式:

在一行中输出 PA+PB的值。

输入样例 1:

3862767 6 13530293 3

输出样例 1:

399

输入样例 2:

3862767 1 13530293 8

思路

关键是首先处理出,只含有DA的字符串。
然后将该字符串转化为整数相加。
使用c++的特性

c++11 数值类型和字符串的相互转换 - 农民伯伯-Coding - 博客园 https://www.cnblogs.com/gtarcoder/p/4925592.html

to_string()可以数字转为字符串

/*字符串(string)转为数字*/
std::string str = "1000";
int val = std::stoi(str);
long val = std::stol(str);
float val = std::stof(str);
/*字符串(char*)转为数字*/
atoi: 将字符串转换为 int
atol: 将字符串转换为long
atoll:将字符串转换为 long long
atof: 将字符串转换为浮点数

AC代码

#include<bits/stdc++.h>
using namespace std;
int main(void){
	string a,b;
	char da, db;
	int m,i=0;
	cin >> a >> da >> b >> db;
	while(i<a.length()) {
		if(a[i] != da){
			a.erase(a.begin() + i);
			i--; 
		}
		i++;
	}
	//cout <<a<<endl;/*取得对应字符串成功*/
	i=0;
	while(i<b.length()) {
		if(b[i] != db){
			b.erase(b.begin() + i);
			i--; 
		}
		i++;
	}
	//cout <<b<<endl;/*取得对应字符串成功*/
	
	if(a!="" && b!=""){/* stol 函数对空字符串报错*/
		m =stol(a) + stol(b);
	}
	else{
		if(a==""&& b!=""){
			m=stol(b);
		}
		else if(a=="" && b==""){
			m=0;
		}
		else
			m=stol(a);
	}
	printf("%d",m);
	return 0;
}
posted @ 2019-01-21 20:10  lingr7  阅读(193)  评论(1编辑  收藏  举报