Касир продає квитки на автобус, який курсує від міста А до міста В. Вартість дного квитка залежить від відстані, на яку потрібно їхати пасажиру. Знайдіть вартість N квитків до населеного пункту, відстань до якого вводиться з клавіатури, якщо:
5грн, до 50 км
15грн, від 51 до 100км
х=
25грн, від 101 до 150км
35грн, від 151 км
#include <iostream>
typedef long long ll;
using namespace std;
bool ll_is_valid(ll t, ll N, ll x, ll y)
{
return t / x + (t - x) / y >= N;
}
ll f(ll N, ll x, ll y)
{
ll R = 1;
while (!ll_is_valid(R,N,x,y)) R *= 2;
ll L = R / 2;
while(R - L > 1)
{
ll M = (L + R) / 2;
if (!ll_is_valid(M,N,x,y)) {L = M;}
else {R = M;}
}
return R;
}
int main()
{
ll N,x,y;
cin >> N >> x >> y;
if(x > y) swap( x, y );
cout << f(N, x, y) << std::endl;
}
Если разрешение файла увеличили в три раза, а частоту дискретизации уменьшили в пять раз, значит объем файла был увеличен в три раза и уменьшен в пять.
Время передачи изменяется пропорционально объему файла, то есть, к примеру, увеличив объем в три раза, время передачи будет увеличено также в три раза.
В пункт А файл был передан за 50 секунд. Определим время передачи в пункт А нового (изменённого) файла.
50 * 3 / 5 = 30 секунд.
То есть если бы мы передавали измененный файл в пункт А, то он был бы передан за 30 сек.
Пропускная между А и Б в шесть раз выше, значит из пункта А в пункт Б файл был передан за
30 / 6 = 5 секунд.