增大整数———晴问算法

2023-05-16

文章目录

  • 1 题目
  • 2 思路
  • 3 代码

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);
    //cout<<s<<" ";
    string ans = "";
    int len = s.size();
    //cout<<len<<" ";
    int firstNum = s[0] - '0';
    //cout<<firstNum<<" ";
    if(a > firstNum){
        //cout<<a<<" ";
        ans += to_string(a);
        //cout<<ans<<" ";
        ans += s;
        //cout<<ans<<" ";
    }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(使用前将#替换为@)

增大整数———晴问算法 的相关文章

随机推荐