Josif_tepe

Untitled

Jun 20th, 2026
207
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.76 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <set>
  4. using namespace std;
  5. typedef long long ll;
  6.  
  7. ll power_10(ll exp) {
  8.     ll res = 1;
  9.     for(ll i = 0; i < exp; i++) {
  10.         res *= 10;
  11.     }
  12.     return res;
  13. }
  14. int main() {
  15.     ios_base::sync_with_stdio(false);
  16.     ll N, P;
  17.     cin >> N >> P;
  18.     vector<string> prefixes(P);
  19.     set<string> st;
  20.     for(int i = 0; i < P; i++) {
  21.         cin >> prefixes[i];
  22.         st.insert(prefixes[i]);
  23.     }
  24.     vector<string> minimal;
  25.    
  26.     for(int i = 0; i < P; i++) {
  27.         string pre = "";
  28.         bool ok = false;
  29.         for(int j = 0; j < prefixes[i].length() - 1; j++) {
  30.             pre += prefixes[i][j];
  31.             if(st.count(pre)) {
  32.                 ok = true;
  33.                 break;
  34.             }
  35.         }
  36.         if(!ok) {
  37.             minimal.push_back(prefixes[i]);
  38.         }
  39.     }
  40.    
  41.     ll total_numbers = power_10(N);
  42.     ll half = (N + 1) / 2;
  43.     ll palindromes = power_10(half);
  44.    
  45.     ll numbers_forbidden = 0, palindromes_forbidden = 0;
  46.     for(string p: minimal) {
  47.         ll L = p.length();
  48.         numbers_forbidden += power_10(N - L);
  49.         if(L <= half) {
  50.             palindromes_forbidden += power_10(half - L);
  51.         }
  52.         else {
  53.             string tmp(N, '0');
  54.             for(int j = 0; j < half; j++) {
  55.                 tmp[j] = p[j];
  56.             }
  57.             for(int j = half; j < N; j++) {
  58.                 tmp[j] = tmp[N - 1 - j];
  59.             }
  60.             if(tmp.compare(0, L, p) == 0) {
  61.                 palindromes_forbidden += 1;
  62.             }
  63.            
  64.            
  65.            
  66.            
  67.         }
  68.     }
  69.    
  70.    
  71.     cout << (total_numbers - palindromes - numbers_forbidden + palindromes_forbidden) << endl;
  72.     return 0;
  73. }
  74.  
Advertisement
Add Comment
Please, Sign In to add comment