2692 - X个核桃
<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>
Input
第一行一个数字T(1<T<100),表示测试数据的组数。
第二行开始,每一行包含两个数字N,M(2<=n,m<=10^8)
Output
在单独的一行中,输出大家最终可以喝到的饮料数目。
Examples
Input
2 2 2 5 4
Output
3 6
Solution 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; }
Solution 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; }