小木棍打表

打表代码

#include <bits/stdc++.h>
using namespace std;
int a[] = {6, 2, 5, 5, 4, 5, 6, 3, 7, 6};
int ans[100];
int get(int x) {
    int cnt = 0;
    while (x > 0) {
        cnt += a[x % 10];
        x /= 10;
    }
    return cnt;
}
int main() {
    memset(ans, 0x3f, sizeof ans);
    for (int i = 1; i <= 1e8; i++) {
        // cout << i << " " << get(i) << '\n';
        ans[get(i)] = min(ans[get(i)], i);
    }
    for (int i = 1; i <= 50; i++) {
        cout << i << " " << ans[i] << '\n';
    }
    return 0;
}

/*
1 1061109567
2 1
3 7
4 4
5 2
6 6
7 8
8 10
9 18
10 22
11 20
12 28
13 68
14 88
15 108
16 188
17 200
18 208
19 288
20 688
21 888
22 1088
23 1888
24 2008
25 2088
26 2888
27 6888
28 8888
29 10888
30 18888
31 20088
32 20888
33 28888
34 68888
35 88888
36 108888
37 188888
38 200888
39 208888
40 288888
41 688888
42 888888
*/
#include <bits/stdc++.h>
using namespace std;
int a[] = {6, 2, 5, 5, 4, 5, 6, 3, 7, 6};
int main() {
    int t;
    cin >> t;
    while (t--) {
        int n;
        cin >> n;
        if (n == 1) {
            cout << -1 << '\n';
            continue;
        }
        if (n <= 6) {
            if (n == 2) {
                cout << 1 << '\n';
            }
            if (n == 3) {
                cout << 7 << '\n';
            }
            if (n == 4) {
                cout << 4 << '\n';
            }
            if (n == 5) {
                cout << 2 << '\n';
            }
            if (n == 6) {
                cout << 6 << '\n';
            }
            continue;
        } else {
            int k = n % 7;
            if (k == 0) {
                for (int i = 1; i <= n / 7; i++) {
                    cout << 8;
                }
                cout << '\n';
            }
            if (k == 1) {
                cout << 10;
                n -= 8;
                for (int i = 1; i <= n / 7; i++) {
                    cout << 8;
                }
                cout << '\n';
            }
            if (k == 2) {
                cout << 18;
                n -= 9;
                for (int i = 1; i <= n / 7; i++) {
                    cout << 8;
                }
                cout << '\n';
            }
            if (k == 3) {
                if (n == 10) {
                    cout << 22 << '\n';
                    continue;
                } else if (n == 17) {
                    cout << 200 << '\n';
                } else {
                    n -= 17;
                    cout << 200;
                    for (int i = 1; i <= n / 7; i++) {
                        cout << 8;
                    }
                    cout << '\n';
                }
            }
            if (k == 4) {
                cout << 20;
                n -= 11;
                for (int i = 1; i <= n / 7; i++) {
                    cout << 8;
                }
                cout << '\n';
            }
            if (k == 5) {
                cout << 28;
                n -= 12;
                for (int i = 1; i <= n / 7; i++) {
                    cout << 8;
                }
                cout << '\n';
            }
            if (k == 6) {
                cout << 68;
                n -= 13;
                for (int i = 1; i <= n / 7; i++) {
                    cout << 8;
                }
                cout << '\n';
            }
        }
    }
    return 0;
}

1 条评论

  • 1