Editorial for VM 13 Bài 03 - RR
Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.
Submitting an official solution before solving the problem yourself is a bannable offence.
Submitting an official solution before solving the problem yourself is a bannable offence.
Lưu ý: Các code mẫu dưới đây chỉ mang tính tham khảo và có thể không AC được bài tập này
Code mẫu của flashmt
#include <iostream> #include <cstdio> #include <cstring> using namespace std; char s[1000100], x, y; int d[256], n; long long ans; int main() { gets(s); scanf(" %c%c", &x, &y); n = strlen(s); for (int i = 0; i < n; i++) { if (s[i] == y) ans += d[x]; d[s[i]]++; } cout << ans << endl; }
Code mẫu của happyboy99x
import java.io.BufferedReader; import java.io.InputStreamReader; public class Main { public static void main(String argv[]) throws Exception { BufferedReader inp = new BufferedReader(new InputStreamReader(System.in)); String s = inp.readLine(); String t = inp.readLine(); int n = s.length(), now = 0; for(int i = 0; i < n; ++i) if(s.charAt(i) == t.charAt(1)) ++now; long res = 0; for(int i = 0; i < n; ++i) { if(s.charAt(i) == t.charAt(1)) --now; if(s.charAt(i) == t.charAt(0)) res += now; } System.out.println(res); inp.close(); } }
Code mẫu của ladpro98
uses crt; var s:ansistring; i:longint; d,kq:int64;x,y:char; begin readln(s);readln(x,y); if (s[1]=x) then d:=1 else d:=0; kq:=0; for i:=2 to length(s) do begin if (s[i]=y) then kq:=kq+d; if (s[i]=x) then inc(d); end; write(kq); end.
Code mẫu của RR
// Author: RR #include <iostream> #include <cstdio> #include <sstream> #include <fstream> #include <iomanip> #include <cstdlib> #include <cstring> #include <string> #include <algorithm> #include <vector> #include <queue> #include <stack> #include <deque> #include <set> #include <map> #include <ctime> #include <cmath> #define FOR(i,a,b) for(int i=(a),_b=(b); i <= _b; ++i) #define FORD(i,a,b) for(int i=(a),_b=(b); i >= _b; --i) #define REP(i,a) for(int i=0,_a=(a); i < _a; ++i) using namespace std; const int MN = 1000111; int cnt[MN]; char s[MN]; int main() { while (gets(s)) { char a, b; scanf("%c%c", &a, &b); int l = strlen(s); REP(i,l) { if (i) cnt[i] = cnt[i-1]; else cnt[i] = 0; if (s[i] == a) ++cnt[i]; } long long res = 0; FORD(i,l-1,1) if (s[i] == b) { res += cnt[i-1]; } cout << res << endl; break; } return 0; }
Code mẫu của skyvn97
#include<cstdio> #include<cstring> #define MAX 1001001 typedef long long ll; char s[MAX]; char a[2]; ll c[MAX]; int n; ll r; int main(void) { gets(s); gets(a); n=strlen(s); int i; c[n]=0; for (i=n-1;i>=0;i=i-1) { if (a[1]==s[i]) c[i]=c[i+1]+1; else c[i]=c[i+1]; } r=0; for (i=0;i<n;i=i+1) if (s[i]==a[0]) r=r+c[i+1]; printf("%lld",r); return 0; }
Comments