#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。