Ôn tập cuối năm

TB

TUVUNG - TỪ VỰNG

Dữ liệu vào: standard input

Dữ liệu ra: standard output

Giới hạn thời gian: 1.0 giây

Giới hạn bộ nhớ: 128 megabyte 

 

     Uyên viết ra một xâu S có độ dài không quá 106 chỉ gồm các kí tự thường trong bảng chữ cái tiếng Anh. Một từ vựng là một từ thu được bằng cách sao chép một đoạn kí tự liên tiếp từ xâu S thoả mãn một trong hai điều kiện:

     - Bắt đầu bằng một nguyên âm (a, e, i, o, u), kết thúc bằng một phụ âm

     - bắt đầu bằng một phụ âm và kết thúc là một nguyên âm.

     Yêu cầu: Giúp Uyên đếm số lượng từ vựng có trong S theo quy tắc trên.

Dữ liệu nhập:

  - Gồm một xâu S.

Kết quả:

  - in ra một số duy nhất là kết quả tìm được.

Ràng buộc:

  - 1/3 số test: Xâu S dài không quá 104.

Ví dụ

input

adceba

output

9

Lưu ý:

  - Đây không phải là test chấm chính thức của BTC.

ND
27 tháng 6 2023 lúc 17:20
#include<bits/stdc++.h>using namespace std;string s;long long c[1000001],w[1000001];int main() {getline(cin,s);long long n = s.size();if(s[n-1] == 'a' || s[n-1] == 'e' || s[n-1] == 'i' || s[n-1] == 'o' || s[n-1] == 'u') c[n-1] = 0;else c[n-1] = 1;for(int i = n-2;i >= 0;i--) {if(s[i] == 'a' || s[i] == 'e' || s[i] == 'i' || s[i] == 'o' || s[i] == 'u') {c[i] = c[i+1];}else {c[i] = c[i+1]+1;}}if(s[n-1] == 'a' || s[n-1] == 'e' || s[n-1] == 'i' || s[n-1] == 'o' || s[n-1] == 'u') w[n-1] = 1;else w[n-1] = 0;for(int i = n - 2; i >= 0;i--) {if(s[i] != 'a'&s[i] != 'e'& s[i] != 'i' &s[i] != 'o'&s[i] != 'u') {w[i] = w[i+1];}else w[i] = w[i+1]+1;}long long dem = 0;for(int i = 0;i < s.size();i++) {if(s[i] == 'a' || s[i] == 'e' || s[i] == 'i' || s[i] == 'o' || s[i] == 'u') {dem = dem + c[i];}else {dem = dem + w[i];}}cout << dem;return 0;}    
Bình luận (2)

Các câu hỏi tương tự
TB
Xem chi tiết
TB
Xem chi tiết
HM
Xem chi tiết
NX
Xem chi tiết
H24
Xem chi tiết
PD
Xem chi tiết
H24
Xem chi tiết
SZ
Xem chi tiết
TB
Xem chi tiết