温馨提醒:吸烟有害健康,请勿尝试吸烟!
首先分析题目,提取关键信息:
- Peter 有 n 根烟
- k(k>1)个烟蒂可以换一个新的烟
- Peter 最终能吸到多少根烟呢?
然后分析输入输出格式:
- 每组测试数据一行包括两个整数n,k(1<n,k≤10^8次方)
- 对于每组测试数据,输出一行包括一个整数表示最终烟的根数。
由上面分析可知:
- 需要定义两个整形变量接收输入的n和k
- 需要判断可以换多少根新烟
- 新烟和手上剩余的烟是否可以继续换新烟
- 可能会有多次换烟的机会
- 定义一个变量存储总吸烟数
import java.util.Scanner;
public class P1150 {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
int n=scanner.nextInt(),k=scanner.nextInt();
int yet=n;//在手上的烟
while(yet>=k){//是否可以换新烟
n+=yet/k;//总数加上产生的新烟
yet=yet-yet/k*k+yet/k;//计算经过本轮换新烟后还存在手的烟
//-yet/k*k是指产生新烟过程消耗了多少烟(整数相除自动丢弃小数)
//+yet/k得到的新烟
}
System.out.println(n);
}
}
主要是注意别忘了换烟剩下的烟还是可以和新的烟一起换的。