Advertisement
vlatkovski

Tarifa (државен '17) za 12/15

Mar 10th, 2018
308
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.35 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int main() {
  5. //    std::ios::sync_with_stdio(false);
  6. //    freopen("in.txt", "r", stdin);
  7. //    freopen("out.txt", "w", stdout);
  8.     string s;
  9.     cin >> s;
  10.     int len = s.length();
  11.     int n = len < 7 ? stoi(s) : 1000000;
  12.     bitset<1000000> prime;
  13.     bitset<1000000> done;
  14.     prime.set();
  15.     {
  16.         prime[1] = false;
  17.         //for (int i = 4; i <= n; i += 2) prime[i] = false;
  18.         //for (int i = 6; i <= n; i += 3) prime[i] = false;
  19.         for (int p0 = 6; p0*p0 <= n; p0 += 6) {
  20.             int p = p0-1;
  21.             if (prime[p]) {
  22.                 for (int i = p*2; i <= n; i += p) {
  23.                     prime[i] = false;
  24.                 }
  25.             }
  26.             p = p0 + 1;
  27.             if (prime[p]) {
  28.                 for (int i = p*2; i <= n; i += p) {
  29.                     prime[i] = false;
  30.                 }
  31.             }
  32.         }
  33.     }
  34.     int cnt = 0;
  35.     for (int i = 0; i < len; ++i) {
  36.         int jmax = len-i < 7 ? len-i : 6;
  37.         for (int j = 0; j < jmax; ++j) {
  38.             int x = stoi(s.substr(i, j+1));
  39.             if (!((x > 2 && x%2 == 0) || (x > 3 && x%3 == 0))) {
  40.                 if (prime[x] && !done[x]) {
  41.                     done[x] = true;
  42.                     cnt++;
  43.                 }
  44.             }
  45.         }
  46.     }
  47.     cout << cnt << endl;
  48. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement