打字机


Submit solution

Points: 100
Time limit: 1.0s
Memory limit: 80M

Author:
Problem type
Allowed languages
C, C++

打字机

题目描述

机器猫要在电脑前打字。当前文档里已有 \(1\) 个字,他需要把文档变成恰好 \(n\) 个字。 在任意时刻,若文档中有 \(x\) 个字,可以进行以下两种操作之一:

  1. \(在末尾新增一个字\):字数变为 x + 1
  2. \(整体复制粘贴一次\):字数变为 2x

请计算,为了得到恰好 \(n\) 个字,机器猫最少需要进行多少次操作。

输入格式

  • 一行,一个正整数 n

输出格式

  • 一行,一个正整数,表示达到 n 个字所需的最少操作次数。

样例

\(输入\)

16

\(输出\)

4

\(输入\)

5

\(输出\)

3

样例说明

  • 对于 n = 161 → 2 → 4 → 8 → 16,共 \(4\) 步。
  • 对于 n = 51 → 2 → 4 → 5,共 \(3\) 步。

数据范围

\(1 \le n \le 10^6\)



Comments

There are no comments at the moment.