#HX1253E. 合并字符串

提交16 通过11
通过率68.8%
时间限制1000ms
内存限制128MiB
    ID: 10053 传统题 1000ms 128MiB 尝试: 16 已通过: 11 难度: 普及- 上传者: 标签>编程题C++CSPCSP复赛CSP复赛专项练习暑假CSP复赛集训暑假集训1253-字符串模拟

题目描述

题目描述

给定一个只包含数字字符的字符串 s 和一个正整数 k。

如果字符串 s 的长度大于 k,则需要执行以下操作:

将字符串拆分成长度为 k 的若干个连续子串,使得前 k 个字符都分在第一个子串中,接下来的 k 个字符都分在第二个子串中,依次类推。最后一个子串的长度可以小于 k;

用第 1步拆分出的每个子串中的所有数字之和替换对应的子串。例如,"346" 会被替换为 "13",因为3+4+6=133+4+6=13

按照从左到右的顺序合并所有子串得到一个新的字符串,如果新字符串的长度大于 k 则重复第一步。

如果字符串 s 的长度不大于 k,则不需要执行任何操作。

输入格式

第一行,包含一个字符串 s,保证 s 中只包含数字字符;

第二行,包含一个整数 k。

输出格式

一行一个字符串,表示原字符串的最终结果。

样例输入

11111222223
3

样例输出

135

提示

  • 第一轮,将 s 分成:"111"、"112"、"222" 和 "23" 。 接着,计算每一组的数字和:1+1+1=31+1+1=31+1+2=41+1+2=42+2+2=62+2+2=62+3=52+3=5 。 这样,s 在第一轮之后变成 "3" + "4" + "6" + "5" = "3465" 。
  • 第二轮,将 s 分成:"346" 和 "5" 。 接着,计算每一组的数字和:3+4+6=133+4+6=135=55=5 。 这样,s 在第二轮之后变成 "13" + "5" = "135" 。 现在,sk|s|\le k ,所以返回 "135" 作为答案

对于 100% 的数据:1s1051\le |s|\le 10^{5}2k1052\le k\le 10^{5},其中 s|s| 表示字符串 s 的长度。

12
2
12
123
3
123
84200
4
140