Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define task "PRIMES"
- #include <iostream>
- #include <cstdio>
- #include <algorithm>
- using namespace std;
- using ll = long long;
- using ld = long double;
- constexpr int N = 6e6 + 5;
- int n, k;
- int f[N], prime[N], m;
- void Read()
- {
- cin >> n >> k;
- }
- void Solve()
- {
- for (int i = 2; i < N; ++i)
- {
- if (!f[i])
- f[i] = prime[++m] = i;
- for (int j = 1; j <= m && prime[j] * i < N; ++j)
- f[prime[j] * i] = prime[j];
- }
- string ans;
- ans.reserve(600000);
- for (int i = 1; i <= n; ++i)
- {
- string p;
- for (int v = prime[i]; v; v /= 10)
- p.push_back(char(v % 10 + '0'));
- reverse(p.begin(), p.end());
- for (auto j : p)
- {
- while (k > 0 && !ans.empty() && j > ans.back())
- {
- ans.pop_back();
- --k;
- }
- ans.push_back(j);
- }
- }
- while (k--)
- ans.pop_back();
- cout << ans;
- }
- int32_t main()
- {
- ios_base::sync_with_stdio(0);
- cin.tie(0);
- cout.tie(0);
- if (fopen(task ".INP", "r"))
- {
- freopen(task ".INP", "r", stdin);
- freopen(task ".OUT", "w", stdout);
- }
- Read();
- Solve();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement