#P597. 最少乘法

最少乘法

题目描述

给定一个正整数 nn,最少需要多少次乘法运算才能从 aa 算出 ana^n 呢?

例如当 n=5n=5 的时候,最少需要 33 次乘法:

a5=(a2)2aa^5=(a^2)^2\cdot a

n=23n=23 的时候,最少需要 66 次乘法,具体步骤为

  • x0=ax_0=a
  • 计算 x1=x0x0=a2x_1=x_0\cdot x_0=a^2
  • 计算 x2=x0x1=a3x_2=x_0\cdot x_1=a^3
  • 计算 x3=x1x2=a5x_3=x_1\cdot x_2=a^5
  • 计算 x4=x3x3=a10x_4=x_3\cdot x_3=a^{10}
  • 计算 x5=x4x4=a20x_5=x_4\cdot x_4=a^{20}
  • 计算 x6=x2x5=a23x_6=x_2\cdot x_5=a^{23}

输入格式

单个整数表示 nn

输出格式

单个整数表示最少的乘法运算次数。

5
3
9
4

数据范围

  • 对于 30%30\% 的数据,1n201\leq n\leq 20
  • 对于 60%60\% 的数据,1n10001\leq n\leq 1000
  • 对于 100%100\% 的数据,1n100001\leq n\leq 10000