Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #define forn(i, n) for (int i = 0; i < int(n); ++i)
- #define ford(i, n) for (int i = int(n) - 1; i >= 0; --i)
- #define sz(c) int((c).size())
- #define all(c) (c).begin(), (c).end()
- #define fst first
- #define snd second
- #define pb push_back
- #define mp(x, y) make_pair(x, y)
- using ll = long long;
- using vi = vector<int>;
- using pii = pair<int, int>;
- #define FILE_NAME "a"
- #ifdef LOCAL
- #define eprintf(args...) fprintf(stderr, args), fflush(stderr)
- #else
- #define eprintf(args...) ;
- #endif
- int m, n;
- bool read() {
- if (scanf("%d%d", &m, &n) < 2) {
- return 0;
- }
- return 1;
- }
- const int MAXV = (int)1e6 + 100;
- int ptr[MAXV];
- int g[MAXV][10];
- int eused[MAXV * 10];
- void dfs(int v) {
- for (; ptr[v] < m; ) {
- int to = g[v][ptr[v]];
- putchar('0' + ptr[v]);
- ptr[v]++;
- dfs(to);
- }
- }
- string solve() {
- int MAXM = 1;
- forn(i, n - 1) {
- MAXM *= m;
- }
- //int edges = MAXM * m;
- forn(i, MAXM) {
- forn(j, m) {
- int mask = i;
- mask = (mask * m) % MAXM;
- mask = (mask + j);
- g[i][j] = mask;
- }
- }
- forn(i, MAXM) {
- ptr[i] = 0;
- }
- dfs(MAXM - 1);
- return "";
- }
- int main() {
- #ifdef LOCAL
- freopen(FILE_NAME ".in", "r", stdin);
- freopen(FILE_NAME ".out", "w", stdout);
- #endif
- /*
- for (m = 2; m <= 10; m++) {
- ll cur = 1;
- for (n = 2; n <= 10; n++) {
- cur *= m;
- if (cur > (int)1e6) {
- break;
- }
- eprintf("m=%d, n=%d\n", m, n);
- solve();
- }
- }
- */
- while (read()) {
- auto ans = solve();//out << solve() << '\n';
- cout << '\n';
- }
- #ifdef LOCAL
- eprintf("Time: %.10f\n", clock() * 1.0 / CLOCKS_PER_SEC);
- #endif
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement