#include <iostream>
using namespace std;
int searchOverHangs(float * inArr, float overHang, int lowerBound, int upperBound)
{
int position = (lowerBound + upperBound) / 2;
float curVal = inArr[position];
float nextVal = inArr[position + 1];
if (overHang >= curVal && overHang < nextVal)
{
return position + 1;
}
else if (overHang < curVal)
{
upperBound -= (upperBound - lowerBound) / 2;
return searchOverHangs(inArr, overHang, lowerBound, upperBound);
}
else
{
lowerBound += (upperBound - lowerBound) / 2;
return searchOverHangs(inArr, overHang, lowerBound, upperBound);
}
}
int main()
{
float overHangs [277];
float overHang = 0;
float denominator = 2;
overHangs[0] = 0;
for (float i = 1; i < 277; i++)
{
overHang += (1 / (i + 1));
overHangs[int(i)] = overHang;
}
float input;
while (true)
{
scanf("%f", &input);
if (input == 0.00)
{
break;
}
int answer = searchOverHangs(overHangs, input, 0, 276);
printf("%d card(s)\r\n", answer);
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBzZWFyY2hPdmVySGFuZ3MoZmxvYXQgKiBpbkFyciwgZmxvYXQgb3ZlckhhbmcsIGludCBsb3dlckJvdW5kLCBpbnQgdXBwZXJCb3VuZCkKewogICAgaW50IHBvc2l0aW9uID0gKGxvd2VyQm91bmQgKyB1cHBlckJvdW5kKSAvIDI7CglmbG9hdCBjdXJWYWwgPSBpbkFycltwb3NpdGlvbl07CglmbG9hdCBuZXh0VmFsID0gaW5BcnJbcG9zaXRpb24gKyAxXTsKCWlmIChvdmVySGFuZyA+PSBjdXJWYWwgJiYgb3ZlckhhbmcgPCBuZXh0VmFsKQoJewoJCXJldHVybiBwb3NpdGlvbiArIDE7Cgl9CgllbHNlIGlmIChvdmVySGFuZyA8IGN1clZhbCkKCXsKCQl1cHBlckJvdW5kIC09ICh1cHBlckJvdW5kIC0gbG93ZXJCb3VuZCkgLyAyOwoJCXJldHVybiBzZWFyY2hPdmVySGFuZ3MoaW5BcnIsIG92ZXJIYW5nLCBsb3dlckJvdW5kLCB1cHBlckJvdW5kKTsKCX0KCWVsc2UKCXsKCQlsb3dlckJvdW5kICs9ICh1cHBlckJvdW5kIC0gbG93ZXJCb3VuZCkgLyAyOwoJCXJldHVybiBzZWFyY2hPdmVySGFuZ3MoaW5BcnIsIG92ZXJIYW5nLCBsb3dlckJvdW5kLCB1cHBlckJvdW5kKTsJCQoJfQp9CgppbnQgbWFpbigpCnsKCWZsb2F0IG92ZXJIYW5ncyBbMjc3XTsKCWZsb2F0IG92ZXJIYW5nID0gMDsKCWZsb2F0IGRlbm9taW5hdG9yID0gMjsKCW92ZXJIYW5nc1swXSA9IDA7Cglmb3IgKGZsb2F0IGkgPSAxOyBpIDwgMjc3OyBpKyspCgl7CgkJb3ZlckhhbmcgKz0gKDEgLyAoaSArIDEpKTsKCQlvdmVySGFuZ3NbaW50KGkpXSA9IG92ZXJIYW5nOwoJfQoJZmxvYXQgaW5wdXQ7Cgl3aGlsZSAodHJ1ZSkKCXsKCQlzY2FuZigiJWYiLCAmaW5wdXQpOwoJCWlmIChpbnB1dCA9PSAwLjAwKQoJCXsKCQkJYnJlYWs7CgkJfQoJCWludCBhbnN3ZXIgPSBzZWFyY2hPdmVySGFuZ3Mob3ZlckhhbmdzLCBpbnB1dCwgMCwgMjc2KTsKCQlwcmludGYoIiVkIGNhcmQocylcclxuIiwgYW5zd2VyKTsKCX0KCXJldHVybiAwOwp9