SILVER - Cut the Silver Bar

no tags 

A creditor wants a daily payment during n days from a poor miner in debt. Since the miner can not pay his daily obligation, he has negotiated with the creditor an alternative way, convenient for both parties, to pay his debt: the miner will give an equivalent of a 1µ (= 0.001mm) long piece of a silver bar as a guarantee towards the debt. The silver bar owned by the poor miner is initially nµ units long.

By the end of n days the miner would not have any more silver to give and the creditor would have received an amount of silver equivalent to that of the silver bar initially owned by the miner. By then, the miner expected to have enough money to pay the debt at the next day so that he would have back all his silver.

With this negotiation in mind, the miner has realized that it was not necessary to cut exactly 1µ silver piece from the bar everyday. For instance, at the third day he could give the creditor a 3µ silver piece, taking back the equivalent of a 2µ silver piece which the creditor should already have.

Since cutting the bar was rather laborious and time consuming, the miner wanted to mini-mize the number of cuts he needed to perform on his silver bar in order to make the daily silver deposits during the n days. Could you help him?

Input

Input consists of several cases, each one defined by a line containing a positive integer number n (representing the length in micras of the silver bar and the number of days of the amortization period). You may assume that 0 < n < 20000. The end of the input is recognized by a line with 0.

Output

For each given case, output one line with a single number: the minimum number of cuts in which to cut a silver bar of length nµ to guarantee the debt during n days.

Example

Input:
1
5
3
0

Output: 0
2
1

hide comments
davidgalehouse: 2016-10-14 08:09:01

Don't give up! Do examples by hand for small numbers (<= 16), keeping the goal in mind.

Last edit: 2016-10-14 08:09:16
luc815689327: 2016-08-25 15:53:12

Why not give a whole silver bar? Then all answer is 0.

hanstan: 2016-06-01 11:03:54

3 lines of code...

pvsmpraveen: 2016-02-04 14:46:54

100th Classical
Single Statement ;)

Last edit: 2016-02-04 15:02:23
dokz: 2016-01-18 11:57:56

I love this problem :) Don't listen to people who tell to ignore this problem - it is easy, but interesting. That's exactly what is ACM about - to understand a complex, badly-formed, non-algorithmic problem, find the simple math or algorithmical solution, and implement it. It can be solved in 1 line for O(1) time without loops in C#. AC 0.00s.

Last edit: 2016-01-18 11:58:23
Aadil Ahmad: 2015-02-21 09:13:27

Awesome Math Problem :D


Added by:John Mario
Date:2011-04-29
Time limit:1s
Source limit:50000B
Memory limit:1536MB
Cluster: Cube (Intel G860)
Languages:All except: ASM64
Resource:XXIV Colombian Programming Contest ACIS REDIS 2010 - ACM ICPC