题目描述
Peter 有 n 根烟,他每吸完一根烟就把烟蒂保存起来,k(k>1)个烟蒂可以换一个新的烟,那么 Peter 最终能吸到多少根烟呢?
吸烟有害健康。
输入格式
每组测试数据一行包括两个整数 n, k(1 < n, k <= 10^8)。
输出格式
对于每组测试数据,输出一行包括一个整数表示最终烟的根数。
输入输出样例
输入 #1复制
4 3
输出 #1复制
5
输入 #2复制
10 3
输出 #2复制
14
说明/提示
对于 100\%100% 的数据,1 < n, k <= 10^8。
Java的AC代码如下:
import java.util.Scanner;
public class Main {
private static Scanner sc;
public static void main(String[] args) {
sc = new Scanner(System.in);
int a = sc.nextInt(); //一开始有a支烟
int b = sc.nextInt(); //每有b个烟蒂可以换一支烟
int n = a; //抽完的烟蒂
int m = 0; //新换的烟
while ( n >= b ) {
n = n - b;
m = m + 1;
n = n + 1;
}
System.out.println(a+m);
}
}
C++的AC代码如下:
思路与Java的一样。
#include <iostream>
using namespace std;
int main(){
int a ;
cin >> a;
int b ;
cin >> b;
int n = a;int m = 0;
while ( n >= b ) {
n = n - b;
m = m + 1;
n = n + 1;
}
cout << a+m;
}