Peter's Smokes

来源:互联网 发布:纪念碑谷mac版 编辑:程序博客网 时间:2024/06/05 21:59

Peter’s Smokes

DESCRIPTION
Peter has n cigarettes. He smokes them one by one keeping all the butts. Out of k>1 butts he can roll a new cigarette.How many cigarettes can Peter have?

Input
Input is a sequence of lines. Each line contains two integer numbers giving the values of n and k. The input is terminated by end of file.

Output
For each line of input, output one integer number on a separate line giving the maximum number of cigarettes that Peter can have.

Sample input
4 3
10 3
100 5

Sample output
5
14
124

题解:用烟头换烟,求能抽到的最多的烟数
解题方法:贪心算法

#include <cstdio>#include <iostream>using namespace std;int main(){    int n,k,sum;    while(scanf("%d%d",&n,&k)!=EOF)    {        sum=n;        while(n/k)       //贪心算法        {            sum+=n/k;            n=n/k+n%k;//n%k为不能被整除的余数用来和新增的n/k相加        }        printf("%d\n",sum);    }    return 0;}

直接算法:

#include<cstdio>using namespace std;int main(){    int m,n;    while(scanf("%d %d",&m,&n)!=EOF)    {        int sum=0;        while(m>=n)//烟蒂达到可换烟的数目时        {            sum=sum+(m-m%n);//可以用烟蒂换烟的烟数            m=(m-m%n)/n+m%n;//总烟蒂数        }        sum=sum+m;//烟数和不能换烟的烟蒂数        printf("%d\n",sum);    }    return 0;}
0 0
原创粉丝点击