Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- typedef long long ll ;
- ll fgen(ll base) {
- ll cpy = base;
- int length = 0;
- while (cpy > 0) {
- cpy /= 10;
- ++length;
- }
- ll base_d = 1;
- ll offset = 0;
- for (int i = 0; i < length; ++i) {
- offset += base_d;
- base_d *= 10;
- }
- return offset;
- }
- int main() {
- ll a;
- cin >> a;
- int state;
- cin >> state;
- ll brute = a;
- ll cpy;
- set<int> digits;
- if (state == 0) {
- int tc = 1;
- while (true) {
- brute = fgen(brute) * tc;
- if (brute < a) {
- ++tc;
- } else {
- cout << brute << "\n";
- return 0;
- }
- }
- } else {
- string s;
- ll cpy = brute;
- int dig_len = 0;
- while (cpy > 0) {
- dig_len += 1;
- cpy /= 10;
- }
- cpy = brute;
- s = string(dig_len, '0');
- for (int i = 0; i < dig_len; ++i) {
- s[dig_len - i - 1] = char(cpy % 10 + int('0'));
- digits.insert(cpy % 10);
- cpy /= 10;
- }
- if ((digits.size() == 2) ||(digits.size() == 1)) {
- cout << s << "\n";
- return 0;
- }
- char cchar = s[0];
- int cindex = 0;
- int cdiff = 0;
- int cpos = 0;
- if (s.size() > 1) {
- cchar = s[1];
- cindex = 1;
- if (s[0] != s[1]) {
- cdiff = 1;
- cpos = 1;
- }
- }
- string result(dig_len, ' ');
- result[0] = s[0];
- if (s.size() == 2) {
- cout << s << "\n";
- return 0;
- }
- if (s.size() == 1) {
- cout << s << "\n";
- return 0;
- }
- int diff_pos = 1;
- char mx_diff_char = s[1];
- int diffs_cnt = 0;
- bool is_updated_higer = false;
- int t_tries = 5000;
- int t_tries_cnt = 0;
- while (true) {
- int curr_diff_index = -1;
- for (int j = diff_pos; j < result.size(); ++j) {
- result[j] = mx_diff_char;
- if (s[j] != result[j]) {
- if ((s[j] > mx_diff_char) && diffs_cnt < 1) {
- ++diffs_cnt;
- // cout << "NEW MAX = " << mx_diff_char << " AT " << j << "\n";
- mx_diff_char = char(int(mx_diff_char) + 1);
- j = diff_pos - 1;
- }
- t_tries_cnt++;
- if (t_tries_cnt >= t_tries) {
- break;
- }
- }
- t_tries_cnt++;
- if (t_tries_cnt >= t_tries) {
- break;
- }
- }
- cout << result << "\n";
- break;
- int a;
- // cin >> a;
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement