fork download
  1. #include <bits/stdc++.h>
  2. #define my_angel QuynhNhu
  3. //#define int long long
  4. #define ll long long
  5. #define ull unsigned long long
  6. #define fi first
  7. #define se second
  8. #define endl "\n"
  9. #define float double
  10. #define ii pair<int,int>
  11.  
  12. using namespace std;
  13.  
  14. const int N = 1e6 + 5;
  15. const int mod = 1e9 + 7;
  16. const int base = 256;
  17.  
  18. string s;
  19. int hsh[N];
  20. vector<int> v[40];
  21.  
  22. void init(){
  23.  
  24. v[0].emplace_back(0);
  25. int n = s.size();
  26. s = " " + s;
  27. for (int i = 1; i <= n; ++i){
  28. hsh[i] = (hsh[i - 1] * 10 + s[i] - '0') % 33;
  29. v[hsh[i]].emplace_back(i);
  30. }
  31.  
  32. }
  33.  
  34. ll sol1(){
  35.  
  36. ll ans = 0;
  37. for (int i = 0; i < 33; ++i){
  38. ans += 1ll * v[i].size() * (v[i].size() - 1) / 2;
  39. }
  40. return ans;
  41.  
  42. }
  43.  
  44. int sol2(){
  45.  
  46. int ans = 0;
  47. for (int i = 0; i < 33; ++i){
  48. if (v[i].size()) ans = max(ans, v[i][v[i].size() - 1] - v[i][0] + 1);
  49. }
  50. return ans;
  51.  
  52. }
  53.  
  54. signed main(){
  55. cin.tie(0) -> sync_with_stdio(false);
  56.  
  57. if (fopen( "input.inp" , "r" )){
  58. freopen( "input.inp" , "r" , stdin );
  59. freopen( "output.out" , "w" , stdout );
  60. }
  61.  
  62. cin >> s;
  63. init();
  64. int x; cin >> x;
  65.  
  66. if (x == 1) cout << sol1();
  67. else cout << sol2();
  68.  
  69. return 0;
  70. }
  71.  
Success #stdin #stdout 0s 5324KB
stdin
Standard input is empty
stdout
1