(66)
5. Определите тип алгоритма для указанных команд.
Команда
Тип алгоритма
розов
сказать Привет!
аурулар
Братура
з
судлануваат да се
зарлардан
EERGEGEBERG
НА НЕЕЕНЕ СЕРЕВОД НАЗВАНЕ
ЗА
повторить 20
БЕБрагуудаараараа
правила на дрогира
аралдар
Бондар
Взагалі
каалаараа алдартай
А
талаар
... ..
FEE
а а
Я араларын орталы
5 Варна Варна
всегда
в
гие
но
унтраасан
илната кондурсгал
илан бандаларини
- Балаларда
тер Вазирлар ишлари
б
уулаачлага
МА?
НОВОЕ ОБАЧЕЛА
дерін
Дарьераа д
Кузнак
алока
дараагаараа
НАВЕСТИ
begin
var n:=ReadInteger('Число элементов массива=');
var a:=ArrRandom(n,-25,25);
Write('Исходный массив: '); a.Println;
var k:=a.Where(x->sqr(x)>sqr(a[0])).Count;
if k>0 then Writeln
('Найдено ',k,' элементов, квадрат которых больше квадрата первого')
else Writeln
('Нет ни одного элемента, квадрат которого больше квадрата первого')
end.
Тестовое решение:
Число элементов массива=15
Исходный массив: 11 12 -11 -3 -16 -22 22 4 -4 -1 -16 -9 -19 4 16
Найдено 7 элементов, квадрат которых больше квадрата первого
#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;
}