Advertisement
KennasSticky

p60_slow

Apr 16th, 2022 (edited)
1,134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.39 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. #define ts to_string
  6.  
  7. const int MAXN = 10001;
  8. bool sieve[MAXN] = {0};
  9. vector<int> primes;
  10.  
  11. // TODO: ISPRIME FUNC
  12. bool isPrime(int a)
  13. {
  14.     for (int i = 2; i <= sqrt(a); i++)
  15.     {
  16.         if (!(a % i)) return false;
  17.     }
  18.  
  19.     return true;
  20. }      
  21.  
  22. // TODO: CONCAT FUNCTION
  23. bool concat(int a, int b)
  24. {
  25.     string sa, sb;
  26.  
  27.     sa = ts(a);
  28.     sb = ts(b);
  29.    
  30.     int ta = stoi(sa + sb);
  31.     int tb = stoi(sb + sa);
  32.  
  33.     return isPrime(ta) && isPrime(tb);
  34. }
  35.  
  36.  
  37. int main()
  38. {
  39.     auto start = std::chrono::steady_clock::now();
  40.  
  41.     for (int i = 2; i < MAXN; i++)
  42.     {
  43.         if (!sieve[i])
  44.         {
  45.             primes.push_back(i);
  46.  
  47.             for (int j = 2; i * j < MAXN; j++)
  48.             {
  49.                 sieve[i*j] = 1;
  50.             }
  51.         }
  52.     }
  53.  
  54.     int sz = primes.size();
  55.  
  56.     for (int i = 0; i < sz; i++)
  57.     {
  58.         for (int j = i + 1; j < sz; j++)
  59.         {
  60.             if (!concat(primes[i], primes[j]))
  61.             {
  62.                 continue;
  63.             }
  64.            
  65.             for (int k = j + 1; k < sz; k++)
  66.             {
  67.                 if (!concat(primes[i], primes[k]) || !concat(primes[j], primes[k])) continue;
  68.  
  69.                 for (int m = k + 1; m < sz; m++)
  70.                 {
  71.                     if (!concat(primes[i], primes[m]) || !concat(primes[j], primes[m]) || !concat(primes[k], primes[m])) continue;
  72.  
  73.                     for (int p = m + 1; p < sz; p++)
  74.                     {
  75.                        
  76.                         if (!concat(primes[i], primes[p]) || !concat(primes[j], primes[p]) || !concat(primes[k], primes[p]) || !concat(primes[m], primes[p])) continue;
  77.  
  78.                         int ans = primes[i] + primes[j] + primes[k] + primes[m] + primes[p];
  79.  
  80.                         cout << primes[i] << " " << primes[j] << " " << primes[k] << " " << primes[m] << " " << primes[p] << endl;
  81.  
  82.                         cout << ans << endl;
  83.  
  84.                         auto stop = std::chrono::steady_clock::now();
  85.                         auto duration = std::chrono::duration_cast<std::chrono::nanoseconds>((stop - start) / 1000);
  86.    
  87.                         cout << "Time taken by function: " << duration.count() << " nanoseconds" << endl;
  88.  
  89.                         return 0;
  90.                     }
  91.                 }
  92.             }
  93.         }
  94.     }
  95.  
  96.     return 0;
  97.  
  98.  
  99. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement