POJ 2509 Peter's smokes(Peter的香烟)
POJ 2509 Peter的香烟
描述
Peter抽烟。他抽烟一个个地抽着烟头。从 k (k>1) 个烟头中,他可以抽一根新烟。
彼得可以抽几支烟?
彼得可以抽几支烟?
输入
输入是一系列行。每行包含两个给出n和k值的整数。
输出
对于输入的每一行,在单独的行上输出一个整数,给出Peter可以拥有的最大香烟数量。
样本输入
4 3 10 3 100 5
样本输出
5 14 124
思路
输入n之后,判断n是否大于等于k,如果是,那么:
u = n / k;
n -= u * k;
s += u;
n += u;
直到n小于k
而代码可以简写为:
s += n / k; n -= n / k * (k-1);
代码
#include <iostream> using namespace std; int main() { int n,k,s=0;//定义n,k,总和和能抽的香烟数量 while(cin>>n>>k){//当有输入时输入 s=0;//初始化 s+=n;//先把所有香烟抽完 while(n>=k){//当剩下的烟可以换时 s+=n/k;//总和增加新抽的烟数 n-=n/k*(k-1);//减少烟蒂 } cout<<s<<endl;//输出 } return 0; }