Codeforces 1269C.LongBeautifulInteger

题目描述
在这里插入图片描述
取出子串,然后用字符串拼接起来,判断是否满足条件,如果不满足就让子串+1

/**
 *    @Author: Wilson79
 *    @Datetime: 2020年1月9日 星期四 16:11:17
 *    @Filename: 1269C.LongBeautifulInteger.cpp
 */

#include <iostream>
#include <cstring>
#include <algorithm>
 
using namespace std;
 
// "123" + "1" = "124"
string adds(string a, string b) {
    string res = "";
    int t = 0;
    reverse(a.begin(), a.end());
    reverse(b.begin(), b.end());
    for (int i = 0; i < a.size() || i < b.size(); i ++) {
        if (i < a.size()) t += a[i] - 48;
        if (i < b.size()) t += b[i] - 48;
 
        res += to_string(t % 10);
        t = t / 10;
    } 
 
    if (t > 0) res += to_string(t);
    reverse(res.begin(), res.end());
    return res;
}
 
int main() {
    int n, k;
    cin >> n >> k;
    string s;
    cin >> s;
 
    string sub = s.substr(0, k), tmp = "";
 
    // 每个子串拼起来,看是否比x小,如果小了就让子串+1,否则直接输出结果
    int T = n / k;
    for (int i = 0; i < T; i ++) {
        tmp += sub;
    }
 
    tmp += s.substr(0, n % k);
    if (tmp >= s) {
        cout << n << endl;
        cout << tmp << endl;
     } else {
        sub = adds(sub, "1");
        tmp = "";
        for (int i = 0; i < T; i ++) {
            tmp += sub;
        }
        tmp += sub.substr(0, n % k);
        cout << n << endl;
        cout << tmp << endl;
    }
 
    return 0;
}
发布了182 篇原创文章 · 获赞 71 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/qq_43827595/article/details/103910413