Problem B
Julemost
Languages
da
en
Vanemennesket Maj drikker nøjagtigt det samme antal julemostflasker per dag fra den 1. oktober til juleaften, den 24. december. Antallet af flasker per dag er et heltal $r$, som opfylder $0 < r \leq R$.
Du vil bestemme det totale antal julemostflasker, som hun har tømt indtil nu. Du vil være færdig senest juleaften, $85$ dage efter hun er begyndt at drikke.
I slutningen af hver dag spørger du Maj, hvor meget julemost hun har fået indtil nu. Du kan kun spørge én gang per dag.
Interaktion
Interaktionen begynder med at dit program læser en enkelt linje indeholdende heltallet $R$, som angiver det maksimale antal flasker, som Maj kan tænkes at drikke per dag. Interaktionen fortsætter i runder, med en runder per dag. I hver rundet spørger dit program, om Maj har drukket $X$ flasker julemost siden den 1. oktober til og med i dag. Spørgsmålsformatet er »$X$«, hvor $X$ er et ikke-negativt heltal. Dit første spørgsmål, »$X_1$«, betyder altså »Har du drukket $X_1$ flasker den 1. oktober?« Dit andet spørgsmål, »$X_2$«, betyder »Har du sammenlagt drukket $X_2$ flasker den 1. og 2. oktober?« Og så videre.
Majs svar på hvert spørgsmål læses fra standardindlæsningen. Hendes svar er en enkelt linje med et af tre ord:
-
»less«, hvis Maj har drukket færre end $X$ flasker indtil nu,
-
»exact«, hvis Maj har drukket præcis $X$ flasker indtil nu,
-
»more«, hvis Maj har drukket flere end $X$ flasker indtil nu.
Dersom dit program modtager »exact« har det fundet det rigtige svar og skal afslutte uden at stille flere spørgsmål.
Dit program bliver bedømt forkert, hvis du ikke har fået en »exact«-respons inden for $85$ runder.
Skylning af udskriftsbufferen
Interaktive problemer bliver kørt mod et dommerprogram. Udskriften fra dit program kan muligvis blive hængende for længe i en såkaldt udskriftsbuffer, hvilket fører til bedømmelsen uden for tidsgrænsen. For at forhindre dette bør du sørge for at udtrykkeligt tømme udskriftsbufferen ved hver udskrift. Dette kaldes populært at skylle eller spule bufferen.
I Python3:
print(x, flush=True)
I Java:
System.out.println(x); System.out.flush();
I C++:
std::cout << x << "\n" << std::flush;
Pointsætning
Gruppe |
Point |
Begrænsning |
1 |
25 |
$R = 84$ |
2 |
20 |
$R = 1\, 500$ |
3 |
55 |
$R = 1\, 000\, 000$ |
Beskrivelse af eksemplerne
I eksempel 1 sætter Maj 5 flasker til livs om dagen. På den første dag spørger du, om hun har drukket 8 flasker, men hun har kun drukket 5. På den anden dag spørger du, om hun har drukket 10 flasker, hvilket er korrekt, således at interaktionen afsluttes.
I eksempel 2 sætter Maj 6 flasker til livs om dagen. På den første dag spørger du, om hun har drukket 10 flasker, men hun har kun drukket 6. På den anden dag spørger du, om hun har drukket 10 flasker, men hun har drukket 12. På den tredje dag spørger du, om hun har drukket 18 flasker, hvilket er korrekt, således at interaktionen afsluttes.
Read | Sample Interaction 1 | Write |
---|
84
8
less
10
exact
Read | Sample Interaction 2 | Write |
---|
84
10
less
10
more
18
exact