相同方法用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;
}
相同方法用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吧