Матч 325, Калькулятор зарплаты (SalaryCalculator)

Дивизион 2, Уровень 1

 

Работая в компании, за первые 200 часов работник получает зарплату в размере p1 долларов в час каждый месяц. За остальные часы до конца месяца ставка работника составляет p2 долларов в час. Вычислить, какое наименьшее количество часов должен работать работник в месяц, чтобы получить суммарную зарплату в salary долларов.

 

Класс: SalaryCalculator

Метод: double calcHours(int p1, int p2, int salary)

Ограничения: 1 £ p1, p2 £ 100, 1 £ salary £ 106.

 

Вход. Ежемесячная зарплата работника в час за первые 200 часов и за последующие часы.

 

Выход. Наименьшее количество часов должен работать работник в месяц, чтобы получить суммарную зарплату в salary долларов.

 

Пример входа

p1

p2

salary

10

15

1000

10

15

3000

82

8

12140

 

Пример выхода

100.0

266.6666666666667

148.0487804878049

 

 

РЕШЕНИЕ

элементарные вычисления

 

За 200 часов работник получит t = p1 * 200 долларов. Если эта сумма больше salary, то достаточно работать salary / p1 часов. Иначе следует отработать 200 часов с зарплатой p1 долларов в час, а остальное время с зарплатой p2 долларов в час. При этом количество часов, когда зарплата будет составлять p2 долларов в час, равна (salary t) / p2.

 

ПРОГРАММА

 

#include <stdio.h>

 

class SalaryCalculator

{

public:

  double calcHours(int p1, int p2, int salary)

  {

    int t = p1 * 200;

    if (t >= salary) return 1.0 * salary / p1;

    return 200 + 1.0 * (salary - t) / p2;

  }

};