1 题目
2 思路
首先把数字n转化为字符串s,然后把第一个字符转换为数字得到正整数的首位。
- 如果输入的数位a大于首位,则把字符串s拼接在字符串化的数位后面形成新字符串ans;
- 如果输入的数位小于首位,则从首位开始依次对比数字n的每一位和数位a的大小
- 若数位a小于等于数字n的数位,则新字符串ans拼接数字n的数位;
- 否则,新字符串ans拼接数位a,然后数字n剩余的全部数位;
- 如果全部位数都对比完了,新字符串ans的长度等于数字n的长度,则把数位a拼接在新字符串的末尾(数位a小于数字n的每一位)。
考点:
3 代码
#include <cstdio>
#include<iostream>
#include<string>
using namespace std;
int main(){
int n, a;
scanf("%d %d", &n, &a);
string s = to_string(n);
string ans = "";
int len = s.size();
int firstNum = s[0] - '0';
if(a > firstNum){
ans += to_string(a);
ans += s;
}else{
for(int i = 0;i < len;i++){
if(s[i] - '0' >= a)
ans += s[i];
else{
ans += to_string(a);
if(len > 1){
ans += s.substr(i, s.size() - 1);
}
break;
}
}
if(ans.size() == s.size()) ans += to_string(a);
}
printf("%d", stoi(ans));
return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)