PTA GPLT ProblemSet A+B L1_25

Jesus!!!!  本来很easy,卡在test 3.

这是因为AB间的分隔符(delimiter)有且仅有一个空格.也就是说B的开头可以是space

Solution:

第一个用的string:: find_first_of(' ');

刚学正则表达式regular expression,感觉会更好.

#define _CRT_SECURE_NO_WARNINGS
#include <bits/stdc++.h>
#include <algorithm>
#include<unordered_set>
using namespace std;
#define fo(i,n) for(int i=1;i<=n;++i)
int bb, aa;
#define int long long
signed main()
{
	string par;
	getline(cin, par);
	int fpos = par.find_first_of(' ');
	//cout<<fpos<<'\n';
	string sa(par.begin(), par.begin() + fpos);
	string sb(par.begin() + fpos + 1, par.end());
	
	int lena = 0, lenb = 0;

	int flaga = 1;
	for (auto i : sa)
	{
		if (i < '0' || i > '9')
		{
			flaga = 0;
		}
	}
	if (!flaga)
	{
		sa = '?';
	}
	else
	{
		for (auto i : sa)
		{
			aa *= 10;
			aa += i - '0';
		}
		if (aa > 1000 || aa == 0)sa = '?', flaga = 0;
	}

	int flagb = 1;
	for (auto i : sb)
	{
		if (i < '0' || i > '9')
		{
			flagb = 0;
		}
	}
	if (!flagb)
	{
		sb = '?';
	}
	else
	{

		for (auto i : sb)
		{
			bb *= 10;
			bb += i - '0';
		}
		if (bb > 1000 || bb == 0)sb = '?', flagb = 0;
	}

	if (!flaga || !flagb)
	{
		cout << sa << " + " << sb << " = " << '?';
	}
	else
	{
		cout << sa << " + " << sb << " = " << aa + bb;
	}

	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值