个位数和一定,数字位数一定,求最小数
求出最大数,反转最大数;高位补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;
}