CF92B.Binary Number

普及-

通过率:0%

时间限制:1.00s

内存限制:256MB

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

Little walrus Fangy loves math very much. That's why when he is bored he plays with a number performing some operations.

Fangy takes some positive integer x and wants to get a number one from it. While x is not equal to 1, Fangy repeats the following action: if x is odd, then he adds 1 to it, otherwise he divides x by 2. Fangy knows that for any positive integer number the process ends in finite time.

How many actions should Fangy perform to get a number one from number x?

小海象 Fangy 非常热爱数学。因此,当他感到无聊时,他便会对一个数字执行一些操作来玩耍。

Fangy 取某个正整数 xx,并希望将其变为数字 1。只要 xx 不等于 1,Fangy 就重复执行以下操作:若 xx 为奇数,则将其加 1;否则将其除以 2。Fangy 知道,对于任意正整数,该过程都将在有限步内结束。

Fangy 需要执行多少次操作才能将数字 xx 变为 1?

输入格式

The first line contains a positive integer x in a binary system. It is guaranteed that the first digit of x is different from a zero and the number of its digits does not exceed 106.

第一行包含一个二进制表示的正整数 xx。保证 xx 的首位数字不为零,且其位数不超过 10610^6。

输出格式

Print the required number of actions.

输出所需的操作次数。

输入输出样例

  • 输入#1

    1

    输出#1

    0
  • 输入#2

    1001001

    输出#2

    12
  • 输入#3

    101110

    输出#3

    8

说明/提示

Let's consider the third sample. Number 101110 is even, which means that we should divide it by 2. After the dividing Fangy gets an odd number 10111 and adds one to it. Number 11000 can be divided by 2 three times in a row and get number 11. All that's left is to increase the number by one (we get 100), and then divide it by 2 two times in a row. As a result, we get 1.

我们来考虑第三个样例。数字 101110101110 是偶数,因此我们需要将其除以 22。除以 22 后,方阳得到奇数 1011110111,并对其加 11。数字 1100011000 可以连续被 22 整除三次,得到数字 1111。接下来只需将该数加 11(得到 100100),然后连续除以 22 两次。最终结果为 11。

输入解题思路,AI测评打分。不知道怎么写?

首页