1017 - 手机话费

通过次数

0

提交次数

0

时间限制 : 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)