题目链接
塔子哥的数字-美团2023笔试(codefun2000)
题目内容
塔子哥是一个数学爱好者,他经常思考各种数字之间的奥秘。今天,他想要解决一个有趣的问题:如何在一个数字中插入一个数字,以得到最大的结果?
他发现这个问题很有挑战性,因为他必须找到一种方法,能够在给定的数字中插入一个数字,使得插入后的结果最大。于是,他开始思考并设计了一种算法来解决这个问题。
算法的核心思想是:首先将第一个数字转化为字符串,然后将第二个数字插入到字符串的不同位置,得到多个可能的结果。最后,从中选择最大的一个数字作为最终的结果。
塔子哥已经写好了这个算法,并请你帮忙测试一下。请编写一个程序,输入塔子哥手上的两个数字,输出插入后得到的最大数字。(前导零正常输出)
输入描述
输出描述
对于每组数据,输出一行,包括一个整数,得到最大的整数。
样例1
输入
5
123456 8
58264 2
44 5
10086 0
8 0
输出
8123456
582642
544
100860
80
题解1
#include<bits/stdc++.h>
using namespace std;
const int N = 5e4+10;
int t;
char a[N], b;
int main(){
scanf("%d", &t);
while(t--){
memset(a, 0, sizeof a);
scanf("%s %c", a + 1, &b);
bool flag = true; // 用来判断字符b是否小于或等于字符串a中任何一个字符
int n = strlen(a + 1);
for(int i = 1; i <= n; i++){
if(a[i] < b && flag){
printf("%c", b);
flag = false;
}
printf("%c", a[i]);
}
if(flag) printf("%c", b); // 字符b小于或等于字符串a中的任何一个字符
printf("\n");
}
return 0;
}