2692 - X个核桃

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 32 MB

<span style="font-size:10.5pt;font-family:'宋体';">目前我校<span>ACM</span><span>协会的发展如火如荼。除了省赛外,还报名参加了在北京的</span><span>ACM/ICPC</span><span>邀请赛,工期紧,任务重,今天大家都在加班呢。为鼓舞士气,队长打算给大家发一些高富帅才能喝得起的饮料,比如</span><span>X</span><span>个核桃。(传说中可以补脑)</span></span><span style="font-size:10.5pt;font-family:'宋体';"></span>

<span style="font-size:10.5pt;font-family:'宋体';">大家都知道,买饮料经常会出现“再来一瓶”的中奖信息,当然更多的是“谢谢你”(看到这个和看到“再买一瓶”基本上是一个心情的),赌概率的事情毕竟还是比较坑的。</span><span style="font-size:10.5pt;font-family:'宋体';"></span>

<span style="font-size:10.5pt;font-family:'宋体';">于是</span><span style="font-size:10.5pt;font-family:'宋体';">X<span>个核桃的公司很人性化的开展了空罐子换饮料的促销活动,实惠而且环保。每</span><span>M</span><span>个空罐子就可以换一罐新的饮料。换来的新饮料喝完后也可以参加兑换。</span></span><span style="font-size:10.5pt;font-family:'宋体';"></span>

<span style="font-size:10.5pt;font-family:'宋体';">现在给出大家要购买的饮料数目<span>N</span><span>,以及数字</span><span>M</span><span>,请计算大家最终一共可以喝多少罐饮料。</span></span><span style="font-size:10.5pt;font-family:'宋体';"></span>

题目输入

第一行一个数字T1<T<100),表示测试数据的组数。

第二行开始,每一行包含两个数字N,M(2<=n,m<=10^8)

题目输出

在单独的一行中,输出大家最终可以喝到的饮料数目。

输入/输出样例

输入格式

2
2 2
5 4

输出格式

3
6

C语言解答

#include<stdio.h>
int main()
{
	int T,i,t;
	int N[100],M[100];
	scanf("%d",&T);
	while(T--)
	{   i=T;
		scanf("%d %d",&N[i],&M[i]);
		t=N[i];
   	    while(1)
		{
			if(N[i]%M[i]==0)
			{
				t=t+N[i]/M[i];
				N[i]=N[i]/M[i];
			}
			else if(N[i]%M[i]<M[i])
			{
				t+=N[i]/M[i];
				N[i]=N[i]/M[i]+(N[i]%M[i]);
				if(N[i]<M[i])
				{
					break;
				}
				
			}
		}
		printf("%d\n",t);
	}
	  return 0;
}

C++解答

#include <iostream>
#include <cstring>
#include <string>
#include <cmath>
#include <string>
#include <fstream>
using namespace std;
int main()
{
	//ifstream cin;
	//cin.open("a.in");
	//ofstream cout;
	//cout.open("a.out");
    int testcase;
    cin>>testcase;
    while(testcase--)
    {
        long long initial,exnum;
        cin>>initial>>exnum;
        long long count=initial;
        while(initial>=exnum)
        {
            int exchange=initial/exnum;
            count+=exchange;
            initial%=exnum;
            initial+=exchange;
        }
        cout<<count<<endl;
    }
    return 0;
}

Java解答

import java.util.Scanner;
class Main {
	public static void main(String[] args) {
		Scanner reader=new Scanner(System.in);
		int T=reader.nextInt();
		for(int i=0;i<T;i++){
			int n=reader.nextInt();
			int m=reader.nextInt();
			if(n<m){
				System.out.println(n);
			}else{
				int sum=n;
				int k=0;
				boolean flag=true;
				while(flag){
					if(n-m>=0){
						n=n-m+1;
						k++;
					}else flag=false;
				}
				sum+=k;	
				System.out.println(sum);
			}
		}
	}

}