2121 - 超市促销
最近怡购搞促销,用m(m>1)个瓶子就可以换1瓶啤酒,因此特别爱喝酒的Tom同学也不例外,他买了n(n<=100)瓶啤酒,喝完之后就可以拿去怡购换,可是现在的问题是,到最后,Tom同学一共能得到多少瓶啤酒呢?
Input
输入数据首先包括一个整数t(1<=t<=50),表示测试数据的个数,然后是t行数据,每一行包括两个整数,n和m。
Output
对于每个测试样例,请输出Tom同学得到的啤酒总数,每次输出占一行。
Examples
Input
3 4 3 10 3 100 5
Output
5 14 124
Solution 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); } }
Solution 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); } }