#36055: C++ sstream會TLE?


robinlin.su@gmail.com (Robin)

學校 : 國立中央大學附屬中壢高級中學
編號 : 221849
來源 : [61.57.95.237]
最後登入時間 :
2024-01-10 17:35:51
a159. 11743 - Credit Check -- UVa11743 | From: [123.0.250.229] | 發表日期 : 2023-07-02 17:50

相同方法用C過了, 但C++用sstream輸出都是TLE,還有改良的地方?

#include <iostream>
#include <sstream>
using namespace std;

int main()
{
    ios::sync_with_stdio(0),cin.tie(0);
    int n;
    cin >> n;
    cin.ignore();

    while (n--)
    {
        string str;
        getline(cin, str);
        stringstream ss(str);
        int sumodd = 0, sumeven = 0;

        while (ss >> str)
        {
            sumodd += ((str[0] - '0') * 2)/10+((str[0] - '0') * 2) %10+ ((str[2] - '0') * 2)/10+((str[2] - '0') * 2)%10;
            sumeven += (str[1]-'0')+(str[3]-'0');
        }
        if ((sumodd + sumeven) % 10)  cout << "Invalid" << '\n';
        else cout << "Valid" << '\n';
    }
    return 0;
}

 
#36059: Re: C++ sstream會TLE?


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [101.136.203.77]
最後登入時間 :
2024-04-07 15:34:14
a159. 11743 - Credit Check -- UVa11743 | From: [118.160.196.208] | 發表日期 : 2023-07-02 20:54

相同方法用C過了, 但C++用sstream輸出都是TLE,還有改良的地方?

#include
#include
using namespace std;

int main()
{
    ios::sync_with_stdio(0),cin.tie(0);
    int n;
    cin >> n;
    cin.ignore();

    while (n--)
    {
        string str;
        getline(cin, str);
        stringstream ss(str);
        int sumodd = 0, sumeven = 0;

        while (ss >> str)
        {
            sumodd += ((str[0] - '0') * 2)/10+((str[0] - '0') * 2) %10+ ((str[2] - '0') * 2)/10+((str[2] - '0') * 2)%10;
            sumeven += (str[1]-'0')+(str[3]-'0');
        }
        if ((sumodd + sumeven) % 10)  cout << "Invalid" << '\n';
        else cout << "Valid" << '\n';
    }
    return 0;
}


sstream本來就慢,不過這題根本不用sstream吧

 
ZeroJudge Forum