Умова
До проведення $N$-ї ярмарки «Мікротехнології у макропрограмуванні» дизайнери розробили емблему, у якій на квадрат розміром $N \times N$ дм «ставився зверху» квадрат розміром $\left(N-1\right) \times \left(N-1\right)$ дм і так далі. Зверху був квадрат $1 \times 1.$ В цілому організаторам емблема сподобалася, але вони забажали «прикрасити» її золотистою стрічкою, яка йшла б від лівого нижнього кута до правого верхнього, потім по верхньому краю і спускалася до правого нижнього кута (див. малюнок). У найближчому магазині можна було купити стрічку за ціною $Р$ грн. за дм, але відпускалися стрічки тільки з цілою кількістю дм. У той же час магазин пропонував знижку $10\%$, якщо покупка коштувала не менше $100$ грн. і $15\%$ при покупці від $1000$ грн. Скільки щонайменше доведеться заплатити за цю «прикрасу»? Нагадаємо, що на декартовій площині довжина відрізку між точками $\left(x_{1};y_{1}\right)$ та $\left(x_{2};y_{2}\right)$ обчислюється за формулою: $d=\sqrt{\left(\left(x_{2}-x_{1}\right)^{2}+\left(y_{2}-y_{1}\right)^{2} \right)}.$
Вхідні дані:
Програма вводить два натуральних числа $N$ – номер ярмарки та $P$ -ціна стрічки у гривнях за дм $\left(1 \leqslant N \leqslant 100\right).$
Вихідні дані:
Ціна стрічки у копійках (щоб не працювати з дробовими числами).
Тести:
Вхідні дані | Вихідні дані |
2 13 | 9360 |
5 10 | 28800 |
100 1 | 858670 |
1 5 | 2000 |
12 3 | 42660 |
Рішення:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
#include #include using namespace std; int main() { long long N, P; cin >> N >> P; double h, l, d, lenta, price; h = (1+N)*N*0.5; l = 0.5 + N*0.5; d = sqrt(h*h + l*l); lenta = ceil(d + d + 1); price = lenta * P; if (price >= 1000) { price *= 85; } else if (price >= 100) { price *= 90; } else { price *= 100; } if (ceil(100./P) > lenta and price > 90*ceil(100./P)*P){ price = 90*ceil(100./P)*P; } else if (ceil(1000./P) > lenta and price > 85*ceil(1000./P)*P) { price = 85*ceil(1000./P)*P; } cout << price; } |
Пояснення: Спочатку необхідно знайти довжину діагоналі, для цього, умовно ми можемо продовжити саму верхню пряму в праву і ліву сторону до того моменту поки її довжина не стане не менш ніж $N$ дм, а потім починаючи з лівого нижнього кута куба $N \times N$ провести перпендикуляр до цієї прямої. Так у нас вийде прямокутний трикутник, в якому h (знаходимо за формулою $n$-перших членів арифметичної прогресії $S_{n} = \frac{a_{1}+a_{n}}{2} \cdot n$) та l — катети, тоді за теоремою Піфагора можемо знайти діагональ d. Далі знаходимо довжину стрічки і її ціну з огляду на знижки. Також необхідно зробити перевірку, чи буде вигідніше придбати стрічку на таку кількість грошей, яке буде відповідати умовам знижки.