Advertisement
Guest User

Untitled

a guest
Mar 19th, 2018
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.12 KB | None | 0 0
  1. #pragma GCC optimize("Ofast,no-stack-protector")
  2. #pragma GCC target("avx")
  3. #include <bits/stdc++.h>
  4. #include <ext/pb_ds/assoc_container.hpp>
  5. #include <ext/pb_ds/tree_policy.hpp>
  6.  
  7. using namespace __gnu_pbds;
  8. using namespace std;
  9.  
  10. #define re return
  11. #define pb push_back
  12. #define all(x) (x).begin(), (x).end()
  13. #define fi first
  14. #define se second
  15. #define sqrt(x) sqrt(abs(x))
  16. #define mp make_pair
  17. #define pi (3.14159265358979323846264338327950288419716939937510)
  18. #define fo(i, n) for(int i = 0; i < n; ++i)
  19. #define ro(i, n) for(int i = n - 1; i >= 0; --i)
  20. #define unique(v) v.resize(unique(all(v)) - v.begin())
  21.  
  22. template <class T> T abs (T x) { re x > 0 ? x : -x; }
  23. template <class T> T sqr (T x) { re x * x; }
  24. template <class T> T gcd (T a, T b) { re a ? gcd (b % a, a) : b; }
  25. template <class T> int sgn (T x) { re x > 0 ? 1 : (x < 0 ? -1 : 0); }
  26.  
  27.  
  28. typedef vector<int> vi;
  29. typedef vector<vi> vvi;
  30. typedef pair<int, int> ii;
  31. typedef vector<ii> vii;
  32. typedef vector<string> vs;
  33. typedef double D;
  34. typedef long double ld;
  35. typedef long long ll;
  36. typedef pair<ll, ll> pll;
  37. typedef vector<ll> vll;
  38. typedef unsigned long long ull;
  39. typedef tree <int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> _tree;
  40.  
  41. const int maxn = 1010;
  42. ull dp[maxn];
  43. vi v;
  44.  
  45. int main() {
  46. for (int i = 2; i < 50; ++i) {
  47. bool check = true;
  48. for (int j = 2; j <= sqrt(i + 0.1); ++j) {
  49. if (i % j == 0) {
  50. check = false;
  51. break;
  52. }
  53. }
  54. if (check) v.pb(i);
  55. }
  56. fo(i, maxn) dp[i] = (ll) 1e18;
  57. dp[1] = 1;
  58. ull cur;
  59. int st;
  60. for (auto j : v) {
  61. //cout << "!!!!! " << j << endl;
  62. for (int i = maxn - 1; i > 0; --i) {
  63. st = 2, cur = j;
  64. while (st * i < maxn && cur * dp[i] <= (ll) 1e18) {
  65. if (dp[st * i] > cur * dp[i]) dp[st * i] = cur * dp[i];
  66. ++st;
  67. cur *= j;
  68. }
  69. //fo(i, 10) cout << dp[i] << ' ';
  70. //cout << endl;
  71. }
  72. }
  73. int n;
  74. cin >> n;
  75. cout << dp[n] << endl;
  76. re 0;
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement