Матч
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;
}
};