DIEMSO - Tính điểm số

Xem dạng PDF

Gửi bài giải


Điểm: 1,00 (OI)
Giới hạn thời gian: 0.05s
Giới hạn bộ nhớ: 256M

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C#, C++, Go, Java, Pascal, Perl, PHP, PyPy, Python, Ruby, Rust, Scratch, Swift

Trong kỳ thi vấn đáp học sinh phải trả lời các câu hỏi của thầy giáo. Nếu trả lời đúng, thầy giáo đánh dấu bằng ký tự ‘C’ (Correct), nếu sai thì đánh dấu ‘N’ (No Correct).

Khi học sinh trả lời đúng, thầy sẽ đưa ra câu hỏi tiếp theo khó hơn câu trước, còn khi trả lời sai thầy sẽ cho câu hỏi mới dễ hơn.

Sau khi thi xong, kết quả của mỗi học sinh là một xâu các ký tự ‘C’ và ‘N’.

Điểm số của học sinh sẽ được tính như sau: Với các câu trả lời sai học sinh không được điểm, với mỗi câu trả lời đúng học sinh nhận được điểm bằng số lần trả lời đúng liên tiếp từ câu trả lời này trở về trước.

Input

Một xâu ký tự str gồm các chữ cái C và N(~ 1 \le str \le 10000000 ~)

Output

Điểm số của sinh viên

Sample

Input #1
NCNCCCNNCCCNCNCCCCNNCNCCNCNNCCCCC
Output #1
44
Input #2
CCNCCCNCCNCCNC
Output #2
16

Hint

Ví dụ, nếu kết quả là ‘CCNNCNNCCC’, thì điểm số sẽ là 1+2+0+0+1+0+0+1+2+3 = 10. - Yêu cầu: Với 1 xâu cho trước hãy tính điểm của học sinh nhận được

Problem source: THCS Lập Thạch


Bình luận

Please read the guidelines before commenting.



  • 0
    Duong_Thanh_Khiem_L8  đã bình luận lúc 2, Tháng 8, 2026, 15:23

    FULL AC:

    #include <bits/stdc++.h>
    using namespace std;
    string s;
    int main(){
        cin >> s;
        int kq = 0, nho = 1, n = s.length();
        for (int i = 0;i < n;i++){
            if (s[i] == 'C'){
                kq += nho;
                nho++;
            }
            else nho = 1;
        }
        cout << kq;
        return 0;
    }
    

  • 0
    nhankiettvt  đã bình luận lúc 23, Tháng 7, 2026, 2:44

    code full ac cho ae

    #include <algorithm>
    #include <bitset>
    #include <climits>
    #include <cmath>
    #include <cstdio>
    #include <iomanip>
    #include <iostream>
    #include <map>
    #include <queue>
    #include <set>
    #include <stack>
    #include <string>
    #include <unordered_map>
    #include <utility>
    #include <vector>
    
    using namespace std;
    
    #define pii pair&lt;int, int>
    #define pll pair&lt;ll, ll>
    #define vi vector<int>
    #define vll vector<ll>
    #define fi first
    #define se second
    #define pb push_back
    #define all(x) (x).begin(), (x).end()
    #define ll long long
    #define ull unsigned long long
    
    #define FOR(i, a, b) for (int i = (a); i <= (b); ++i)
    #define FORD(i, a, b) for (int i = (a); i >= (b); --i)
    #define REP(i, n) for (int i = 0; i < (n); ++i)
    
    void fast_io() {
      ios_base::sync_with_stdio(false);
      cin.tie(NULL);
      cout.tie(NULL);
    }
    void solve() {}
    
    int main() {
      fast_io();
      string s;
      cin >> s;
      vector<int> a(s.size());
      int last_i = 0, tong = 0;
      for (int i = 0; i < s.size(); i++) {
        if (s[i] == 'C') {
          last_i++;
        } else {
          last_i = 0;
        }
        a.push_back(last_i);
      }
      for (int i : a) {
        tong += i;
      }
      cout << tong;
      return 0;
    }
    

  • 0
    mducc  đã bình luận lúc 15, Tháng 7, 2026, 6:51

    Hint: Đếm tổng độ dài các chuỗi C liên tiếp. Gặp 'C' thì tăng biến đếm và cộng vào kết quả, gặp khác 'C' thì reset đếm về 0.

    code tham khảo (C++)

    #include <bits/stdc++.h>
    using namespace std;
    string s;
    int cnt, ans;
    int main() {
      ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
      cin>>s;
      for(const char &c : s) {
        if(c == 'C') ans+=++cnt;
        else cnt=0;
      }
      cout<<ans;
      return 0;
    }