nq1s788

Вася и пароль

Nov 2nd, 2025
506
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.71 KB | None | 0 0
  1. В этой задаче достаточно было рассмотреть несколько случаев.
  2.  
  3. 1) Если пароль 𝑠
  4.  изначально корректен, то ничего менять не нужно — просто выводим 𝑠.
  5. 2) Теперь попробуем изменить один символ, для этого переберем его и переберем три варианта его замены(любая цифра, любая заглавная латинская буква и любая строчная латинская буква). После замены проверим строку на корректность и если нашлась корректная строка — выведем её.
  6. 3) У нас не получилось заменить подстроку длины 0 и 1, а значит ответ минимум 2. Мы можем всегда его получить следующим образом: заменим первых два символа на «a1», если третий символ заглавная латинская буква, на «A1», если третий символ строчная латинская буква и на «aA», если третий символ — цифра.
  7.  
  8. #include <bits/stdc++.h>
  9.  
  10. using namespace std;
  11.  
  12. string s;
  13.  
  14. bool ok(string t){
  15.     int msk = 0;
  16.    
  17.     for(int i = 0; i < int(t.size()); ++i){
  18.         if(isupper(t[i])) msk |= 1;
  19.         if(islower(t[i])) msk |= 2;
  20.         if(isdigit(t[i])) msk |= 4;
  21.     }
  22.    
  23.     return msk == 7;
  24. }
  25.  
  26. int main() {
  27.     //freopen("input.txt", "r", stdin);
  28.     int t;
  29.     cin >> t;
  30.     for(int i = 0; i < t; ++i){
  31.         cin >> s;
  32.         if(ok(s)){
  33.             cout << s << endl;
  34.             continue;
  35.         }
  36.         bool fnd = false;
  37.         for(int i = 0; i < int(s.size()); ++i){
  38.             string t = s;
  39.            
  40.             t[i] = '1';
  41.             if(ok(t)){
  42.                 cout << t << endl;
  43.                 fnd = true;
  44.                 break;
  45.             }
  46.             t[i] = 'a';
  47.             if(ok(t)){
  48.                 cout << t << endl;
  49.                 fnd = true;
  50.                 break;
  51.             }
  52.             t[i] = 'A';
  53.             if(ok(t)){
  54.                 cout << t << endl;
  55.                 fnd = true;
  56.                 break;
  57.             }
  58.         }
  59.        
  60.         if(fnd) continue;
  61.        
  62.         if(isupper(s[2])){
  63.             s[0] = 'a';
  64.             s[1] = '1';
  65.             cout << s << endl;
  66.             continue;
  67.         }
  68.         if(islower(s[2])){
  69.             s[0] = 'A';
  70.             s[1] = '1';
  71.             cout << s << endl;
  72.             continue;
  73.         }
  74.         if(isdigit(s[2])){
  75.             s[0] = 'a';
  76.             s[1] = 'A';
  77.             cout << s << endl;
  78.             continue;
  79.         }
  80.     }
  81.     return  0;
  82. }
Advertisement
Add Comment
Please, Sign In to add comment