Dang_Quan_10_Tin

Untitled

Jun 24th, 2020
241
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.66 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define ll long long
  3. #define pb push_back
  4.  
  5. #define task "SPRIME"
  6.  
  7. using namespace std;
  8.  
  9. ll Pow(ll x, ll mu, ll mod)
  10. {
  11.     if(mu == 0) return 1%mod;
  12.     if(mu == 1) return x%mod;
  13.     ll t = Pow(x, mu/2, mod)%mod;
  14.     if(mu%2 == 0) return (t%mod*t%mod)%mod;
  15.     else return ((t%mod*t%mod)%mod*x%mod)%mod;
  16. }
  17.  
  18. bool miler(ll d, ll n, ll a)
  19. {
  20.     ll t = Pow(a, d, n);
  21.     if(t == 1 || t == n-1) return true;
  22.     while(d != n-1){
  23.         t = (t*t)%n;
  24.         d *= 2;
  25.         if(t == 1) return false;
  26.         if(t == n-1) return true;
  27.     }
  28.     return false;
  29. }
  30.  
  31. bool chk(ll n)
  32. {
  33.     if(n <= 1 || n == 4) return false;
  34.     if(n <= 3 || n == 7 || n == 61) return true;
  35.     if(n%2 == 0) return false;
  36.     ll d = n-1;
  37.     while(d % 2 == 0){
  38.         d/=2;
  39.     }
  40.     if(miler(d, n, 2) && miler(d, n, 7) && miler(d, n, 61) && miler(d, n, 3)){
  41.         return true;
  42.     }
  43.     return false;
  44.  
  45. }
  46.  
  47. int main()
  48. {
  49.     if(fopen(task".INP", "r")){
  50.         freopen(task".INP", "r", stdin);
  51.         freopen(task".OUT", "w", stdout);
  52.     }
  53.     ll L, R;
  54.     cin >> L >> R;
  55.     ll ans = 0;
  56.     ll p = 1;
  57.     vector<ll>a;
  58.     a.pb(0);
  59.     while(a.size() != 0){
  60.         vector<ll>b;
  61.         for(ll x : a){
  62.             for(int i=1; i<=9; i++){
  63.                 ll cur = i*p + x;
  64.                 //cout << cur <<"\n";
  65.                 if(cur <= R && chk(cur)){
  66.                     b.pb(cur);
  67.                     if(cur >= L){
  68.                         ans ++;
  69.                         //cout << cur <<" ";
  70.                     }
  71.                 }
  72.             }
  73.         }
  74.         a.swap(b);
  75.         p *= 10;
  76.     }
  77.     cout << ans;
  78. }
Advertisement
Add Comment
Please, Sign In to add comment