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;
}

 

 

 
posted @ 2021-02-24 21:10  KevinLikesCoding  阅读(193)  评论(0)    收藏  举报