2692 - X个核桃
时间限制 : 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>
题目输入
第一行一个数字T(1<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); } } } }