#z1081. 小T的数字分解挑战

小T的数字分解挑战

题目背景

小T 在数学课上学习了一个有趣的数字游戏。他发现每个数字都可以像树枝一样不断分叉,直到变成最小的单位。不过每次分叉都需要付出相应的代价,小T 想知道把一个数字完全分叉到最小单位需要付出多少总代价。

题目描述

给定一个初始整数 N,小T 需要进行以下操作直到所有数字都 < 2:

1、挑选一个 ≥ 2 的数字 x

2、将 x 一分为二:变成 x 的一半向下取整 和 一半向上取整。即原先的数 x 消失,取而代之新增两个数 x/2 向下取整 和 (x+1)/2 向下取整(例如:5 会分成 2 和 3,4 会分成 2 和 2)

3、这次分叉操作需要付出 x 点代价

计算将所有数字完全分叉都变为 < 2 的数所需的总代价。

输入格式

一个整数 N。

输出格式

一个整数,表示总代价。

输入输出样例

输入样例 #1

3

输出样例 #1

5

输入样例 #2

5

输出样例 #2

12

样例说明 #1

把 3 分成 1 和 2,付出 3 点,把 2 分成 1 和 1,付出 2 点,最后所有数为 [1, 1, 1],所有数都 < 2,结束操作。总付出:3 + 2 = 5 点。

样例说明 #2

把 5 分成 2 和 3,付出 5 点;3 分成 1 和 2,付出 3 点;再有一个 2 分成 1 和 1,付出 2 点;最后那个 2 分成 1 和 1,付出 2 点。总付出:5 + 3 + 2 + 2 = 12 点。

说明/提示

数据范围

对于 20% 的数据,2 ≤ N ≤ 1000;

对于 60% 的数据,2 ≤ N ≤ 10^8;

对于 100% 的数据,2 ≤ N ≤ 10^17。