Цепочки символов (строки) по следующему правилу. первая строка состоит из одного символа – цифры "1". каждая из последующих цепочек создается такими действиями: в очередную строку дважды записывается цепочка цифр из предыдущей строки (одна за другой, подряд), а в конец приписывается еще одно число – номер строки по порядку (т.е. на i-м шаге дописывается число "i"). вот первые 3 строки, созданные по этому правилу: 1) 1 2) 112 3) 1121123 какие цифры стоят в восьмой строке на 121-126-м местах (считая слева направо c единицы)? фрагмент строки из 6 цифр и объясните, как был получен ответ. эффективное решение данной оценивается выше.
ответ: чтобы попасть на ваш сайт, пользователь должен ввести его доменное имя в адресную строку. общаясь друг с другом, компьютеры используют ip-адреса. ip-адрес имеет следующий вид: 123.457.69.043. если вы введете ip-адрес, привязанный к вашему доменному имени, вы также попадете на свой сайт.
объяснение: поскольку запомнить длинный ip-адрес довольно сложно, то для доступа к сайтам широко используются более простые и короткие доменные имена.
доменное имя состоит из двух частей: сначала указывается непосредственное название ресурса, а затем — домен верхнего уровня (tdl).
например, в доменном имени logaster.com, компонент .com и будет являться tld. выбирая url-адрес, вы увидите, что существует большое разнообразие доменов верхнего уровня. каждое расширение несет в себе определенные коннотации, поэтому важно сделать правильный выбор.
#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;
}