#P597. 最少乘法

最少乘法

题目描述

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

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

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

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

  • 令 x0=ax_0=a;
  • 计算 x1=x0⋅x0=a2x_1=x_0\cdot x_0=a^2;
  • 计算 x2=x0⋅x1=a3x_2=x_0\cdot x_1=a^3;
  • 计算 x3=x1⋅x2=a5x_3=x_1\cdot x_2=a^5;
  • 计算 x4=x3⋅x3=a10x_4=x_3\cdot x_3=a^{10};
  • 计算 x5=x4⋅x4=a20x_5=x_4\cdot x_4=a^{20};
  • 计算 x6=x2⋅x5=a23x_6=x_2\cdot x_5=a^{23}。

输入格式

单个整数表示 nn。

输出格式

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

5
3
9
4

数据范围

  • 对于 30%30\% 的数据,1≤n≤201\leq n\leq 20;
  • 对于 60%60\% 的数据,1≤n≤10001\leq n\leq 1000;
  • 对于 100%100\% 的数据,1≤n≤100001\leq n\leq 10000;