思路:
-
直接使用数学公式:根据题目规律,最终抽的烟数 = 初始烟数 + (初始烟数 - 1) / (换烟需要的烟蒂数 - 1)
-
公式推导:
-
初始有 n 根烟,抽完得到 n 个烟蒂
-
每 k 个烟蒂换一根新烟,相当于每 (k-1) 个烟蒂可以净增加一根烟
-
总共可增加 (n-1)/(k-1) 根烟
-
-
边界处理:
-
题目保证 n > 1, k > 1,无需特殊处理
-
使用整数除法(向下取整)符合题目要求
-
#include <iostream>
using namespace std;
int main() {
long long n, k;
cin >> n >> k;
cout << n + (n - 1) / (k - 1);
return 0;
}