个位数和一定,数字位数一定,求最小数

求出最大数,反转最大数;高位补1即可;

    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    #include <sstream>
    #include <cstring>
    #include <queue>
    #include <vector>
    #include <map>
    #include <stack>
    #include <deque>
    #include <cmath>
    #include <iomanip>
    #include <forward_list>
    #include <set>
    #include <cmath>
    #include <cctype>
    #include<sstream>
    #include<climits>
    #include <list>
    #include <typeinfo>
    //INT_MAX 32 bit int
    //LLONG_MAX 64 bit int
    //LONG_MAX 64 bit int
     
    using namespace std;
     
    #define memmin(a) memset(a,0,sizeof(a))
    #define memmax(a) memset(a,0x3f,sizeof(a));
    #define spr(n) fixed << setprecision(n)
    #define endll '\n'
    #define ifor(i, l, r) for (long long(i) = (l); (i) <= (r); ++(i))
    #define rfor(i, r, l) for (long long(i) = (r); (i) >= (l); --(i))
    using ll = long long;
    using p = pair<int, int>;
    using ull = unsigned long long;
     
    const int IINF = 0x3f3f3f3f;
    const long long LINF = 0x3f3f3f3f3f3f3f3f;
    const double EPS = 1.0e-9;
    const long long MOD = 1e9 + 700;
    const int MAX = 1e5 + 100;
    const double PI = acos(-1);
    const size_t O = static_cast<size_t>(0);
     
     
    inline int read() {
        __int128 fu, sum;
        int c = getchar();
        while (c > '9' || c < '0') {
            if (c == '-')
                fu = -1;
            c = getchar();
        }
        while (isdigit(c)) {
            sum = sum * 10 + c - '0';
            c = getchar();
        }
        return fu * sum;
    }
     
    inline void print(int x) {
        if (x < 0) {
            putchar('-');
            x = -x;
        }
        if (x > 9) print(x / 10);
        putchar(x % 10 + '0');
    }
     
     
    int main() {
        ios::sync_with_stdio(false);
        cin.tie(0);
        cout.tie(0);
        int m, sum;
        cin >> m >> sum;
        if (9 * m < sum || (sum == 0 && m != 1)) {
            cout << -1 << " " << -1;
            return 0;
        }
        string max;
        int temp1 = sum;
        ifor(i, 1, m) {
            if (temp1 > 9) {
                max.push_back(9 + '0');
                temp1 -= 9;
            } else {
                max.push_back(temp1+ '0');
                temp1 = 0;
            }
        }
        string c = max;
        reverse(c.begin(), c.end());
        for (size_t i = 0; i < c.size(); i++) {
            if (c[i] == '0' && i == 0 && c.size() > 1) {
                c[i]++;
                size_t temp = c.rfind('0');
                if (temp != string::npos) {
                    c[temp + 1]--;
                } else
                    c[i + 1]--;
            }
        }
        cout << c << " " << max;
        return 0;
    }
全部评论

相关推荐

就用这个吧:支持多益再加一个空气使用费
点赞 评论 收藏
分享
2024-12-26 13:00
太原理工大学 Java
会飞的猿:简历没啥大问题啊,感觉是缺少了实习经历。多投投先找个中小厂过渡一下吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务