1017 - 手机话费
时间限制 : 1 秒
内存限制 : 32 MB
小明的手机每天消费1元,每消费K元就可以获赠1元,一开始小明有M元,问最多可以用多少天?
题目输入
输入包括多个测试实例。每个测试实例包括2个整数M,K(2<=k<=M<=1000)。M=0,K=0代表输入结束。
题目输出
对于每个测试实例输出一个整数,表示M元可以用的天数。
输入/输出样例
输入格式
2 2 4 3 0 0
输出格式
3 5
C语言解答
#include<stdio.h> int main() { int m,k,d; while(scanf("%d%d",&m,&k)!=EOF,m||k) { d=0; while(m) { m--; d++; if(d%k==0) m++; } printf("%d\n",d); } return 0; }
C++解答
#include<stdio.h> int main() { int m,k,d; while(scanf("%d%d",&m,&k)!=EOF,m||k) { d=0; while(m) { m--; d++; if(d%k==0) m++; } printf("%d\n",d); } return 0; }
Java解答
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); while(true){ int m = in.nextInt(); int k = in.nextInt(); if(m==0 && k==0)break; int tem = m; while(true){ if(tem<k)break; m += tem/k; tem = tem%k+tem/k; } System.out.println(m); } } }
Python解答
import sys def check(m,k): i=0 while True: if m!=0: m -= 1 i +=1 if i%k==0: m = m+1 if m==0: break return i for line in sys.stdin: m,k=map(lambda x:int(x),line.split()) if m!=0 and k!=0: print check(m,k)