Advertisement
BaoJIaoPisu

Untitled

Dec 19th, 2021
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.87 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. using ll = long long;
  6. using ld = long double;
  7. using ull = unsigned long long;
  8.  
  9. using pii = pair<int, int>;
  10. using pll = pair<ll, ll>;
  11. using pld = pair<ld, ld>;
  12.  
  13. #define fi first
  14. #define se second
  15. #define pb push_back
  16. #define pf push_front
  17. #define mp make_pair
  18. #define ins insert
  19.  
  20. #define sz(x) (int)(x.size());
  21. #define all(x) x.begin(), x.end()
  22. #define debug(...) " [" << #__VA_ARGS__ ": " << (__VA_ARGS__) << "] "
  23.  
  24. mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
  25.  
  26. int d4x[4] = {1, 0, -1, 0}; int d4y[4] = {0, 1, 0, -1};
  27. int d8x[8] = {0, 1, 1, 1, 0, -1, -1, -1};
  28. int d8y[8] = {1, 1, 0, -1, -1, -1, 0, 1};
  29.  
  30. template<class X, class Y>
  31.     bool minimize(X &x, const Y &y) {
  32.         if (x > y)
  33.         {
  34.             x = y;
  35.             return true;
  36.         }
  37.         return false;
  38.     }
  39. template<class X, class Y>
  40.     bool maximize(X &x, const Y &y) {
  41.         if (x < y)
  42.         {
  43.             x = y;
  44.             return true;
  45.         }
  46.         return false;
  47.     }
  48.  
  49. const int MOD = 1e9 + 7; //998244353
  50.  
  51. template<class X, class Y>
  52.     void add(X &x, const Y &y) {
  53.         x = (x + y);
  54.         if(x >= MOD) x -= MOD;
  55.     }
  56.  
  57. template<class X, class Y>
  58.     void sub(X &x, const Y &y) {
  59.         x = (x - y);
  60.         if(x < 0) x += MOD;
  61.     }
  62.  
  63. /* Author : Le Ngoc Bao Anh, 11A5, LQD High School for Gifted Student*/
  64.  
  65. const ll INF = 1e9;
  66. const int N = 1e5 + 10;
  67.  
  68. bool prime[200];
  69. ll dp[20][200][200][5];
  70. vector<int> digit;
  71. ll n;
  72.  
  73. ll DP(int index, int x, int y, int hold) {
  74.     if(index == digit.size()) {
  75.         if(prime[x] && prime[y] && !hold) return 1;
  76.         return 0;
  77.     }
  78.  
  79.     if(dp[index][x][y][hold] != -1) return dp[index][x][y][hold];
  80.     ll &res = dp[index][x][y][hold];
  81.     res = 0;
  82.  
  83.     for(int i = 0; i <= 9; i++) {
  84.         for(int j = 0; j <= 9; j++) {
  85.             for(int t = 0; t <= 2; t++) {
  86.                 int sum = (i + 2 * j + t);
  87.                 if(sum / 10 != hold) continue;
  88.                 if(sum % 10 != digit[index]) continue;
  89.                 res += DP(index + 1, x + i, y + j, t);
  90.             }
  91.         }
  92.     }
  93.  
  94.     return res;
  95. }
  96.  
  97. void solve() {
  98.     cin >> n;
  99.     for(int i = 2; i <= 140; i++) prime[i] = 1;
  100.     for(int i = 2; i <= 140; i++) {
  101.         if(prime[i]) {
  102.             for(int j = 2 * i; j <= 140; j += i) prime[j] = 0;
  103.         }
  104.     }
  105.  
  106.     ll v = n;
  107.     while(v > 0) {
  108.         digit.pb(v % 10);
  109.         v /= 10;
  110.     }
  111.     reverse(all(digit));
  112.     for(int i = 0; i <= 15; i++) {
  113.         for(int j = 0; j <= 140; j++) {
  114.             for(int k = 0; k <= 140; k++) {
  115.                 for(int t = 0; t <= 2; t++) {
  116.                     dp[i][j][k][t] = -1;
  117.                 }
  118.             }
  119.         }
  120.     }
  121.  
  122.     cout << DP(0, 0, 0, 0);
  123. }
  124.  
  125. int main()
  126. {
  127.     ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
  128.     #ifndef ONLINE_JUDGE
  129.     freopen("input.txt", "r", stdin);
  130.     freopen("output.txt", "w", stdout);
  131.     #else
  132.     //online
  133.     #endif
  134.  
  135.     int tc = 1, ddd = 0;
  136.     // cin >> tc;
  137.     while(tc--) {
  138.         //ddd++;
  139.         //cout << "Case #" << ddd << ": ";
  140.         solve();
  141.     }
  142. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement