CF387C.George and Number
普及+/提高
通过率:0%
时间限制:1.00s
内存限制:256MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
George is a cat, so he really likes to play. Most of all he likes to play with his array of positive integers b. During the game, George modifies the array by using special changes. Let's mark George's current array as _b_1, _b_2, ..., b|b| (record |b| denotes the current length of the array). Then one change is a sequence of actions:
- Choose two distinct indexes i and j (1 ≤ i, j ≤ |b|; i ≠ j), such that b__i ≥ b__j.
- Get number v = concat(b__i, b__j), where concat(x, y) is a number obtained by adding number y to the end of the decimal record of number x. For example, concat(500, 10) = 50010, concat(2, 2) = 22.
- Add number v to the end of the array. The length of the array will increase by one.
- Remove from the array numbers with indexes i and j. The length of the array will decrease by two, and elements of the array will become re-numbered from 1 to current length of the array.
George played for a long time with his array b and received from array b an array consisting of exactly one number p. Now George wants to know: what is the maximum number of elements array b could contain originally? Help him find this number. Note that originally the array could contain only positive integers.
乔治是一只猫,因此他非常喜欢玩耍。他最喜欢的是和自己的正整数数组 $ b $ 一起玩。在游戏中,乔治通过使用特殊的变换来修改该数组。设乔治当前的数组为 $ b_1,,b_2,,\dots,,b_{|b|} $(其中 $ |b| $ 表示当前数组的长度)。那么一次变换包含如下步骤:
- 选择两个不同的下标 $ i $ 和 $ j $(满足 $ 1 \le i,,j \le |b| $ 且 $ i \ne j $),使得 $ b_i \ge b_j $;
- 得到数值 $ v = \text{concat}(b_i,,b_j) $,其中 $ \text{concat}(x,,y) $ 表示将数字 $ y $ 的十进制表示拼接到数字 $ x $ 的十进制表示末尾所得到的数。例如,$ \text{concat}(500,,10) = 50010 , \text{concat}(2,,2) = 22 $;
- 将数值 $ v $ 添加到数组末尾,数组长度增加 $ 1 $;
- 从数组中删除下标为 $ i $ 和 $ j $ 的两个数,数组长度减少 $ 2 $,剩余元素将被重新编号为 $ 1 $ 到当前数组长度。
乔治用数组 $ b $ 玩了很长时间,并最终得到了一个仅含单个数字 $ p $ 的数组。现在乔治想知道:原始数组 $ b $ 最多可能包含多少个元素?请你帮他找出这个最大值。注意,原始数组中只能包含正整数。
输入格式
The first line of the input contains a single integer p (1 ≤ p < 10100000). It is guaranteed that number p doesn't contain any leading zeroes.
输入的第一行包含一个整数 p(1 ≤ p < 10100000)。保证数字 p 不含前导零。
输出格式
Print an integer — the maximum number of elements array b could contain originally.
输出一个整数——数组 b 最初可能包含的最多元素个数。
输入输出样例
输入#1
9555
输出#1
4
输入#2
10000000005
输出#2
2
输入#3
800101
输出#3
3
输入#4
45
输出#4
1
输入#5
1000000000000001223300003342220044555
输出#5
17
输入#6
19992000
输出#6
1
输入#7
310200
输出#7
2
说明/提示
Let's consider the test examples:
- Originally array b can be equal to {5, 9, 5, 5}. The sequence of George's changes could have been: {5, 9, 5, 5} → {5, 5, 95} → {95, 55} → {9555}.
- Originally array b could be equal to {1000000000, 5}. Please note that the array b cannot contain zeros.
- Originally array b could be equal to {800, 10, 1}.
- Originally array b could be equal to {45}. It cannot be equal to {4, 5}, because George can get only array {54} from this array in one operation.
Note that the numbers can be very large.
我们来考虑以下测试样例:
- 最初的数组 b 可能为 {5,9,5,5}。George 的变换过程可能如下:{5,9,5,5}→{5,5,95}→{95,55}→{9555}。
- 最初的数组 b 可能为 {1000000000,5}。请注意,数组 b 中不能包含数字 0。
- 最初的数组 b 可能为 {800,10,1}。
- 最初的数组 b 可能为 {45}。它不能是 {4,5},因为 George 对该数组仅执行一次操作时,只能得到数组 {54}。
注意:这些数字可能非常大。
输入解题思路,AI测评打分。不知道怎么写?