《关于getlineWA而cinAC这件事》(数据点问题
查看原帖
《关于getlineWA而cinAC这件事》(数据点问题
263258
Hibiki響楼主2020/9/5 22:58

开始用getline(cin, s)读字符串WA了4、5两个点。

第4个数据点的数据

输入:(两个空行)

boboboboboboboboboboy.girgirlgirgigigigigigigirl.boboboboboboboboboboy.girgirlgirgigigigigigigirl.boboboboboboboboboboy.girgirlgirgigigigigigigirl.


输出:(三个空行)

30
30



cin并不会读入空行,实际输出没有那么多空行。与数据点的输出不符。

getline会读入换行符,作为长度为0的字符串进行处理,不特判则会输出两个0而WA,特判输出回车、不输出都是WA。

附代码:

#include <bits/stdc++.h>
using namespace std;
#define Fastio ios::sync_with_stdio(0), cin.tie(0)
int main() {
    Fastio;
    string s;
    while(cin >> s) {
    // while(getline(cin, s)) {
        int len = s.length(), boyCnt = 0, girlCnt = 0;
        // if(len == 0) continue;
        // if(len == 0) {cout << "\n\n"; continue;}
        for(int i = 0; i < len - 2; ++i) {
            if(s[i] == 'b' || s[i + 1] == 'o' || s[i +  2] == 'y') ++boyCnt;
            if(i < len - 3 && (s[i] == 'g' || s[i + 1] == 'i' || s[i +  2] == 'r' || s[i +  3] == 'l')) ++girlCnt;
        }
        cout << boyCnt << "\n" << girlCnt << "\n";
    }
    return 0;
}

2020/9/5 22:58
加载中...