HSG THPT Thanh Hóa 2020 - Xoá số

Xem dạng PDF

Gửi bài giải


Điểm: 0,20 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: CAU3.INP
Output: CAU3.OUT

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

Cho số tự nhiên ~N~. Bằng cách giữ nguyên hoặc xoá đi một số chữ số liên tiếp của ~N~ (nhưng không xoá hết) ta nhận được một số mới, nếu số ~N~ bị chia thành ~2~ phần thì số mới được ghép lại từ hai phần này và giữ nguyên trật tự.

Yêu cầu: Hãy xác định tất cả số cách xoá như trên để số ~N~ mới sau khi xoá chia hết cho ~3~. Lưu ý là hai vị trí khác nhau sẽ tạo ra hai cách xoá khác nhau. Số ~N~ giữ nguyên cũng được coi là một cách xoá.

Input

Đọc từ tệp CAU3.INP chứa số nguyên dương ~N~ (không quá ~10^5~ chữ số)

Output

Ghi ra tệp CAU3.OUT một số nguyên là số cách xoá tìm được

Scoring

Subtask Điểm Giới hạn
1 ~50\%~ Số các chữ số của ~N \le 300~
2 ~25\%~ Số các chữ số của ~N \le 10^4~
3 ~25\%~ Số các chữ số của ~N \le 10^5~

Sample Input 1

1005

Sample Output 1

4

Sample Input 2

2009

Sample Output 2

3

Bình luận

Hãy đọc nội quy trước khi bình luận.



  • 0
    quannmq2009  đã bình luận lúc 12, Tháng 12, 2024, 15:54

    ai giải thik hộ test mẫu với ạ huhu


    • 0
      EZGAME  đã bình luận lúc 13, Tháng 12, 2024, 9:04

      test 1 sẽ có 4 cách xóa: 1005 1-05 10-5 1005 test 2 sẽ có 3 cách xóa: ---9 -009 --09


  • 5
    Duyanh_TQ  đã bình luận lúc 5, Tháng 11, 2024, 14:28

    include <bits/stdc++.h>

    using namespace std; long long solve(string& s){ s = " " + s; long long prefixSum[s.length()] = {0}, sum = 0; int cnt[3] = {0}; for(int i = 1; i < s.length(); ++i){ int digit = s[i] - '0'; sum += digit; prefixSum[i] = prefixSum[i - 1] + digit; cnt[prefixSum[i] % 3]++; } long long res = 0; for(int i = 1; i < s.length(); ++i){ res += cnt[(sum + prefixSum[i - 1]) % 3]; cnt[prefixSum[i] % 3]--; } if(sum % 3 != 0){ res--; } return res; } int main(){ freopen("CAU3.INP", "r", stdin); freopen("CAU3.OUT", "w", stdout); ios::syncwithstdio(0); cin.tie(0); cout.tie(0); string s; cin >> s; cout << solve(s); return 0; } code cho ae tham khao nha dung cho toi down vote plss=((


    • -1
      dmnguyel23  đã bình luận lúc 5, Tháng 1, 2025, 1:07

      giải thích code với ạ


  • -43
    fromhgbwithlove  đã bình luận lúc 8, Tháng 2, 2024, 10:34

    Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.


    • -17
      tretrauvl  đã bình luận lúc 28, Tháng 2, 2024, 2:22

      Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.