На вход подается 2 числа: a,b где 2^a + 2^(a+1) + 2^(a+2) + ... 2^(b-2) + 2^(b-1) + 2^b
На выводе число - результат формулы выше при подстановке a и b
1 вариант через цикл, сложность O(n):
VAR a, b, adder, sum, i: INTEGER; BEGIN READ(a, b); adder := 1; FOR i := 1 TO b DO BEGIN adder := 2 * adder; IF (i >= a) THEN sum := sum + adder END; WRITELN(sum); END.
2 вариант через побитовые сдвиги, сложность O(1):
VAR a, b: INTEGER; BEGIN READ(a, b); WRITELN((1 SHL (b+1)) - (1 SHL (a))); END.
PascalABC.NET 3.3.5, сборка 1662 от 29.04.2018 Внимание! Если программа не работает, обновите версию!
begin Write('Введите 1-прямоугольник, 2-параллелограмм, 3-трапеция:'); var n:=ReadInteger; case n of 1:begin Writeln('ПРЯМОУГОЛЬНИК'); var (a,b):=ReadReal2('Введите длины сторон:'); Writeln('Площадь равна ',a*b) end; 2:begin Writeln('ПАРАЛЛЕЛОГРАММ'); var (a,h):=ReadReal2('Введите длину основания и высоту:'); Writeln('Площадь равна ',a*h) end; 3:begin Writeln('ТРАПЕЦИЯ'); var (a,b,h):=ReadReal3('Введите длины оснований и высоту:'); Writeln('Площадь равна ',(a+b)/2*h); end; else Writeln('Введен неверный номер') end end.
По поводу "является ли трапеция параллелограммом или ромбом". Это некорректный вопрос в информатике. Споры о том, является ли трапеция частным случаем параллелограмма или ромба так и не закончены. Поскольку копирование из Интернет материалов сюда запрещено, а также запрещены ссылки на внешние источники, отсылаю заинтересованных лиц к материалу, который называется "Параллелограммная война". Это о военном конфликте между Англией и Францией, возникший из-за разногласий на научной конференции в Геттингенском университете. Ну а нам войны не нужны, поэтому если автор вопроса четко сформулирует критерий, по которому можно ответить на заданный им подвопрос, можно будет добавить это в программу.
На вход подается 2 числа: a,b где
2^a + 2^(a+1) + 2^(a+2) + ... 2^(b-2) + 2^(b-1) + 2^b
На выводе число - результат формулы выше при подстановке a и b
1 вариант через цикл, сложность O(n):
VAR
a, b, adder, sum, i: INTEGER;
BEGIN
READ(a, b);
adder := 1;
FOR i := 1 TO b DO
BEGIN
adder := 2 * adder;
IF (i >= a)
THEN
sum := sum + adder
END;
WRITELN(sum);
END.
2 вариант через побитовые сдвиги, сложность O(1):
VAR a, b: INTEGER;
BEGIN
READ(a, b);
WRITELN((1 SHL (b+1)) - (1 SHL (a)));
END.
Внимание! Если программа не работает, обновите версию!
begin
Write('Введите 1-прямоугольник, 2-параллелограмм, 3-трапеция:');
var n:=ReadInteger;
case n of
1:begin
Writeln('ПРЯМОУГОЛЬНИК');
var (a,b):=ReadReal2('Введите длины сторон:');
Writeln('Площадь равна ',a*b)
end;
2:begin
Writeln('ПАРАЛЛЕЛОГРАММ');
var (a,h):=ReadReal2('Введите длину основания и высоту:');
Writeln('Площадь равна ',a*h)
end;
3:begin
Writeln('ТРАПЕЦИЯ');
var (a,b,h):=ReadReal3('Введите длины оснований и высоту:');
Writeln('Площадь равна ',(a+b)/2*h);
end;
else Writeln('Введен неверный номер')
end
end.
По поводу "является ли трапеция параллелограммом или ромбом". Это некорректный вопрос в информатике. Споры о том, является ли трапеция частным случаем параллелограмма или ромба так и не закончены. Поскольку копирование из Интернет материалов сюда запрещено, а также запрещены ссылки на внешние источники, отсылаю заинтересованных лиц к материалу, который называется "Параллелограммная война". Это о военном конфликте между Англией и Францией, возникший из-за разногласий на научной конференции в Геттингенском университете. Ну а нам войны не нужны, поэтому если автор вопроса четко сформулирует критерий, по которому можно ответить на заданный им подвопрос, можно будет добавить это в программу.