Submit | All submissions | Best solutions | Back to list |
PROG0581 - Payslip |
A company has a number of workers. These workers want to determine what their average salary is, but none of them wants to divulge his own salary. How can they find the average without doing so?
The first worker picks some random large number and adds his own salary to it. He then whispers the total amount to the second worker. The second worker adds his own salary to that sum and whispers the new total to the third workers, and so on.
When the last worker has added his own salary, he whispers the final amount back to the first worker. The first worker subtracts the random number that he had chosen and divides the remainder by the number of workers. He annouces this result to all workers. This way, the average salary of all workers is known, but none of them knows anything about what the others make.
Input
The first line of input contains the random large number chosen by the first worker. This is followed by the salaries of all workers of the company. Each salary is on a separate line. The company has at least three workers. A line containing the word stop follows the salary of the last worker.
Output
The output must contain the amounts that each worker whispers to the next worker if they apply the procedure as explained in the introduction. This is followed by a final line that contains the average salary of all workers. The average salary must be formatted as a floating point number, rounded up to 2 decimal digits. Derive the exact formatting of the output from the example given below.
Example
Input:
645743 89329 34893 34398 23290 23923 23982 28493 29984 89033 stop
Output:
worker #1 whispers €735072 worker #2 whispers €769965 worker #3 whispers €804363 worker #4 whispers €827653 worker #5 whispers €851576 worker #6 whispers €875558 worker #7 whispers €904051 worker #8 whispers €934035 worker #9 whispers €1023068 average salary: €41925.00
Een bedrijf telt een aantal werknemers. De werknemers willen hun gemiddelde jaarloon bepalen, zonder dat iemand daarbij zijn eigen loon moet verklappen. Hoe kunnen ze dat doen?
De eerste werknemer kiest een groot willekeurig getal en telt dat op bij zijn eigen jaarloon. Hij fluistert dit bedrag in het oor van de tweede werknemer. De tweede werknemer telt zijn eigen jaarloon op bij het bedrag dat de eerste werknemer hem heeft ingefluisterd, en fluistert dit bedrag in het oor van de derde werknemer, enzoverder.
Wanneer de laatste werknemer zijn eigen jaarloon heeft opgeteld bij het bedrag dat hem werd ingefluisterd, dan fluistert hij het totaalbedrag in het oor van de eerste werknemer. De eerste werknemer trekt het willekeurige bedrag dat hij had gekozen terug af van het totaalbedrag, en deelt het resterende bedrag door het aantal werknemers. Dit resultaat deelt hij mee aan alle werknemers. Op die manier kennen de werknemers hun gemiddelde jaarloon, zonder dat één enkele werknemer weet wat de andere werknemers verdienen.
Invoer
De eerste regel van de invoer bevat een willekeurig natuurlijk getal dat door de eerste werknemer werd gekozen. Daarna volgen de lonen van alle werknemers van het bedrijf. Elk van deze lonen staat op een afzonderlijke regel. Er zijn altijd minstens drie werknemers. Na het loon van de laatste werknemer volgt nog een regel die het woord stop bevat.
Uitvoer
De uitvoer moet bestaan uit de bedragen die elke werknemer in het oor van de volgende werknemer fluistert, als ze de procedure toepassen die in de inleiding staat beschreven. Daarna moet nog een laatste regel naar de uitvoer geschreven worden, die het gemiddelde loon van de arbeiders bevat. Het gemiddelde loon moet uitgeschreven worden als een floating point getal, afgerond tot en uitgeschreven met 2 cijfers na de komma. Bekijk onderstaand voorbeeld om te zien hoe de uitvoer precies moet opgemaakt worden.
Voorbeeld
Invoer:
645743 89329 34893 34398 23290 23923 23982 28493 29984 89033 stop
Uitvoer:
werknemer #1 fluistert €735072 werknemer #2 fluistert €769965 werknemer #3 fluistert €804363 werknemer #4 fluistert €827653 werknemer #5 fluistert €851576 werknemer #6 fluistert €875558 werknemer #7 fluistert €904051 werknemer #8 fluistert €934035 werknemer #9 fluistert €1023068 gemiddeld loon: €41925.00
Added by: | Peter Dawyndt |
Date: | 2015-10-18 |
Time limit: | 10s |
Source limit: | 50000B |
Memory limit: | 1536MB |
Cluster: | Cube (Intel G860) |
Languages: | PY_NBC |