2121 - 超市促销
时间限制 : 1 秒
内存限制 : 128 MB
最近怡购搞促销,用m(m>1)个瓶子就可以换1瓶啤酒,因此特别爱喝酒的Tom同学也不例外,他买了n(n<=100)瓶啤酒,喝完之后就可以拿去怡购换,可是现在的问题是,到最后,Tom同学一共能得到多少瓶啤酒呢?
题目输入
输入数据首先包括一个整数t(1<=t<=50),表示测试数据的个数,然后是t行数据,每一行包括两个整数,n和m。
题目输出
对于每个测试样例,请输出Tom同学得到的啤酒总数,每次输出占一行。
输入/输出样例
输入格式
3 4 3 10 3 100 5
输出格式
5 14 124
C语言解答
#include<stdio.h> int sum; int judge(int a,int b) { if((a%b+a/b)/b) { sum+=(a%b+a/b)/b; a=a%b+a/b; return judge(a,b); } else return sum; } main() { int n,m,d; scanf("%d",&n); while(n--) { sum=0; scanf("%d %d",&m,&d); sum=m+m/d; judge(m,d); printf("%d\n",sum); } }
C++解答
#include <stdio.h> int main() { int n , v, k ,re , sum ,fre ,temp ,temp2; scanf("%d",&n); while(n--) { scanf("%d%d",&v,&k); sum = v + v / k; fre = v % k ; re = v / k ; temp = fre +re; while(temp >=k) { sum = sum + (fre + re) / k; temp2 = fre+re; temp = (fre + re) % k +(fre + re) /k; fre = temp2 %k; re = temp2 /k; } printf("%d\n",sum); } }
Java解答
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner input=new Scanner(System.in); int s=input.nextInt(); int n=0,m=0; for(int i=1;i<=s;i++) { n=input.nextInt(); m=input.nextInt(); int sum=n; while(n/m>0) { sum+=n/m; n=n/m+n%m; } System.out.println(sum); } } }