Enlace del concurso: https://atcoder.jp/contests/abc162/tasks
A - Lucky 7
#include <bits / stdc ++. h> usando el espacio de nombres std; int main () { int n; cin >> n; cout << (to_string (n) .find ( " 7 " )! = - 1 ? " Sí " : " No " ); }
B - FizzBuzz Sum
#include <bits / stdc ++. h> usando ll = long long ; usando el espacio de nombres estándar; int main () { ll n; cin >> n; ll ans = 0 ; para (ll i = 1 ; i <= n; i ++ ) { if (i% 3 && i% 5 ) ans + = i; } cout << ans; }
C - Suma de mcd de Tuplas (Fácil)
Por qué falló nuevamente el renderizado ...
#include <bits / stdc ++. h> usando ll = long long ; usando el espacio de nombres estándar; int main () { ll k; cin >> k; ll ans = 0 ; para (ll a = 1 ; a <= k; a ++ ) { para (ll b = 1 ; b <= k; b ++ ) { para (ll c = 1 ; c <= k; c ++ ) { ans + = __gcd ( __gcd (a, b), c); } } } cout <<años }
D - Tripletas RGB
Titulo
Una cadena consta de $ RBG $, encuentre el triplete $ (i, j, k) $ satisfar:
- $ i <j <k $
- $ s [i]! = s [j] \ \ & \ & \ s [i]! = s [k] \ \ & \ & \ s [j]! = s [k] $
- $ ji \! = \ kj $
Ideas
Almacene la posición de las letras $ 3 $, enumere los casos $ 9 $ y encuentre el subíndice que satisfaga $ j> i, kj $ en la búsqueda binaria.
Código
#include <bits / stdc ++. h> usando ll = long long ; usando namespace std; int n; string s; vector < int > v [ 3 ]; inline int idx ( int b, int a, int i) { // Encuentre el primer subíndice no menos que v [a] [i] en v [b] return upper_bound (v [b] .begin (), v [b] .end (), v [a] [i] ) -v [b] .begin (); } ll cal ( int a, int b, int c) { ll ret = 0; for ( int i = 0 ; i <v [a] .size (); i ++ ) { for ( int j = idx (b, a, i); j <v [b] .size (); j ++ ) { for ( int k = idx (c, b, j); k <v [c] .size (); k ++ ) { if (v [b] [j] - v [a] [i]! = v [c] [k] - v [b] [j]) { // 等价 于 条件 中 的 j - i! = k - j ++ ret; } } } } return ret; } int main () { cin >> n >> s; for ( int i = 0 ; i <n; i ++) { // Almacenar la posición de diferentes letras if (s [i] == ' R ' ) v [ 0 ] .push_back (i); else if (s [i] == ' G ' ) V [ 1. .push_back (I)]; la otra V [ 2 ] .push_back (I); } LL ANS = 0 ; para ( int I = 0 ; i < . 3 ; i ++) { // piezas Cite RGB antes y después para ( intj = 0 ; j < 3 ; j ++ ) { for ( int k = 0 ; k < 3 ; k ++ ) { if (i! = j && i! = k && j! = k) { ans + = cal (i, j, k); } } } } cout << ans; }