The ticket for one trip in metro costs 15 rubles, the ticket for 10 trips costs 125 rubles, the ticket for 60 trips costs 440 rubles. The passenger plans to make

This single number

Print three integers equal to the desired number of tickets for 1, 10, 60 trips.

In the code below my solution to this problem. It is a greater part of the tests. In comments is the original algorithm, which is tested completely as well as out (except time). What can I do so?

```
#include <stdio.h>
int main() {
int n, n10, n60;
scanf("%d", &n);
n60 = n / 60;
n = n % 60;
n10 = n / 10;
n = n % 10;
if (n > 8) {
n = 0;
n10++;
}
if (n10 > 3) {
n10 = 0;
n60++;
}
/*long sum = n*15 + n10*125 + n60*440;
long temp = (n10 + 1)*125 + n60*440;
if (temp < sum) {
n = 0;
n10++;
sum = temp;
}
if (440*(n60 + 1) < sum) {
n10 = 0;
n60++;
}*/
printf("%d %d %d", n, n10, n60);
return 0;
}</stdio.h>
```

asked June 14th 19 at 19:12

1 answer

answered on

Solution

To buy a ticket for 60 trips profitable when the number of trips more than 34:

34 trips a trifle: 125*3 + 15*4 = 375 + 60 = 435р

35 trips a trifle: 125*3 + 15*5 = 375 + 75 = 450r

You have cases where the residue [35;39] trips do not count.

EDIT: Although the case of 39 trips will take into account for other reasons.

34 trips a trifle: 125*3 + 15*4 = 375 + 60 = 435р

35 trips a trifle: 125*3 + 15*5 = 375 + 75 = 450r

You have cases where the residue [35;39] trips do not count.

EDIT: Although the case of 39 trips will take into account for other reasons.

Find more questions by tags C++Olympiad programming