【解题思路】 首先,我们需要找到可以插入数字d的最大位置。为了使结果尽可能大,我们应该从高位到低位依次比较当前位置的数字和d的大小。 具体步骤如下:

  1. 读取输入的n和d。
  2. 读取输入的n位正整数a。
  3. 初始化变量maxDigit为0,表示可以插入数字d的最大位置。
  4. 从高位到低位遍历正整数a的每一位:
    • 如果当前位置的数字小于d,则更新maxDigit为当前位置的下一位。
    • 如果当前位置的数字等于d,则更新maxDigit为当前位置。
    • 如果当前位置的数字大于d,则跳出循环。
  5. 将数字d插入到a的maxDigit位置上,得到最终结果。
  6. 输出最终结果。

【代码实现】

#include <iostream>
#include <string>

using namespace std;

int main() {
    int n, d;
    cin >> n >> d;
    string a;
    cin >> a;

    int maxDigit = 0;
    for (int i = 0; i < n; i++) {
        if (a[i] < d + '0') {
            maxDigit = i + 1;
        } else if (a[i] == d + '0') {
            maxDigit = i;
        } else {
            break;
        }
    }

    a.insert(maxDigit, to_string(d));
    cout << a << endl;

    return 0;
}

【复杂度分析】 该算法的时间复杂度为O(n),其中n为正整数a的长度

入数字digitcpp时间限制:1s 空间限制:512 MB【问题描述】你有一个长度为 n 的正整数a和一位要插入的数字d。你可以在正整数a中的任意位置插入该数字包括开头或结尾。你的目标是使结果尽可能大。例如您有号码 76543要插入的数字为 4。那么你可以获得的最大结果是765443可以通过两种方式获得:在a的第3位或第4位后面插入这个数字 。【输入格式】第一行两个整数nd表示正整数a的长度和要

原文地址: https://www.cveoy.top/t/topic/iF7h 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录