cigarettes(香烟)
描述
Tom has many cigarettes. We hypothesized that he has n cigarettes and smokes them
one by one keeping all the butts. Out of k > 1 butts he can roll a new cigarette.
Now,do you know how many cigarettes can Tom has?
湯姆有很多香煙。我們假設他有n支香煙,開始一支一支的抽起來,并且他保留了煙屁股。k個(k>1)煙屁股能夠換一支新煙。現在,你知道湯姆一共能抽多少支煙嗎?
輸入
First input is a single line,it’s n and stands for there are n testdata.then there are n lines ,each line contains two integer numbers giving the values of n and k.
首先,單行輸入n,表示有n組數據。然后又n行,每行包括2個整數n、k。
輸出
For each line of input, output one integer number on a separate line giving the maximum number of cigarettes that Peter can have.
對于每行的輸入,在單獨的每一行上輸出一個整數,給出Peter可以擁有的最大香煙數量。
樣例輸入
3
4 3
10 3
100 5
樣例輸出
5
14
124
代碼如下:
方法一
思路分析:
首先輸入一個n,表示有n組數據要輸入;然后,再輸入兩個數a、b,a表示一共有多少根煙,b表示多少個煙頭可以換一根煙。
例如:
4 3:一共有四根煙,并且每3個煙頭可以換一根煙
將4根煙,3個分成一組,可以分1組并且還剩余1根,而那所分成的一組3根煙所剩下的煙頭又可以換一根煙,最后4(一共4根煙數)+1(其中可以分成的組的個數,即可以換的新煙數)+1(可以換1根)=6
4+1+1=6
10 3:同樣的道理
將10根煙,每3根煙分成一組,可以分成3組剩余1根,這樣可以再次換3根煙,新得到的3根煙和剩余的1根煙一共4根,夠3根,這樣又可以換1根,最后
10(一共10根煙)+3(可以分成3組,每一種3根)+1(可以換1根)=14
10+3+1=14
同理的100 5也是這個道理。
方法一:C++
#include<iostream> using namespace std; int main() {int n;cin>>n;while(n--){int m,w,sum;scanf("%d%d",&m,&w);sum=m;while(m/w){ sum+=m/w; m=m/w+m%w; }cout<<sum<<endl;} return 0; }方法一:Java
import java.util.Scanner;public class cigarettes {public static void main(String[] args) {int a,b,c;Scanner wsq = new Scanner(System.in);a=wsq.nextInt();while(a--!=0){int m,n,sum=0;m=wsq.nextInt();n=wsq.nextInt();sum=m;while(m/n !=0){sum=sum+m/n;m=m/n+m%n;}System.out.println(sum); }} }方法二:C++
#include<stdio.h> int main() {int n,a,b;scanf("%d",&n);while(n--){scanf("%d %d",&a,&b);printf("%d",a+(a-1)/(b-1));}return 0; }總結
以上是生活随笔為你收集整理的cigarettes(香烟)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 货轮多少钱啊?
- 下一篇: 信阳治疗男性不育最好的医院推荐