L1-025 正整數A+B 分數 15

Frodnx發表於2024-08-01

很史的一道題,沒有ac的話建議混多半分直接跳。
讀入最好使用getline,再用substr分割字串。

// 15'00"
#include <iostream>
#include <string>
using namespace std;
int add(string a,string b)
{
    int sum1 = 0, sum2 = 0;
    for(int i = 0; i < a.size(); ++ i)
    {
        sum1 *= 10;
        sum1 += a[i] - '0';
    }
    for(int i = 0; i < b.size(); ++ i)
    {
        sum2 *= 10;
        sum2 += b[i] - '0';
    }
    return sum1 + sum2;
}
bool func(string& s)
{
    for(auto c : s)
        if(c < '0' || c > '9') return false;
    int sum = 0;
    for(int i = 0; i < s.size(); ++ i)
    {
        sum *= 10;
        sum += s[i] - '0';
    }
    if(sum > 1000 || sum == 0) return false;

    return true;
}
int main()
{
    string s, a, b;
    getline(cin,s);
    for(int i = 0; i < s.size(); ++ i)
    	if(s[i] == ' ')
    	{
    		a = s.substr(0,i);
    		b = s.substr(i+1);
    		break;
		}
    if(func(a)) cout << a;
    else cout << "?";
    cout << " + ";
    if(func(b)) cout << b;
    else cout << "?";
    cout << " = ";
    if(func(a) && func(b)) cout << add(a, b);
    else cout << "?";
    return 0;
}

相關文章