Заполнить массив числами натурального ряда(1, до тех пор пока их сумма не станет больше наперед заданного числа м вывести на печать сумму и число элементов массива
Начало Ввод Z ' заданное число - лимит суммы S = 0 ' Здесь мы накапливаем сумму n = 1 ' Счетчик элементов Цикл, пока S <= Z S = S + n n = n + 1 Конец цикла пока n = n - 1 ' на выходе получилось число на 1 больше максимального, уменьшаем Объявляем массив A(n) Цикл по i от 1 до n A(i) = i Вывод A(i) Конец цикла по i Вывод S; n Конец
Program drawFigure; uses graph; var gD,gR:integer; procedure drawHouse(x,y:word); const wallSide=70; windowSide=20; var houseRoof:array[1..4] of pointtype; begin setFillStyle(1,10); bar(x,y-wallSide,x+wallSide,y); rectangle(x,y-wallSide,x+wallSide,y); setFillStyle(1,1); bar(x+wallSide div 2-windowSide div 2,y-wallSide+wallSide div 2-windowSide div 2, x+wallSide div 2-windowSide div 2+windowSide,y-wallSide+wallSide div 2-windowSide div 2+windowSide); rectangle(x+wallSide div 2-windowSide div 2,y-wallSide+wallSide div 2-windowSide div 2, x+wallSide div 2-windowSide div 2+windowSide,y-wallSide+wallSide div 2-windowSide div 2+windowSide); setFillStyle(1,2); houseRoof[1].x:=x; houseRoof[1].y:=y-wallSide; houseRoof[2].x:=x+wallSide; houseRoof[2].y:=y-wallSide; houseRoof[3].x:=x+wallSide div 2; houseRoof[3].y:=y-wallSide-wallSide div 2; houseRoof[4].x:=x; houseRoof[4].y:=y-wallSide; fillPoly(4,houseRoof); end; procedure drawTree(x,y:word); const treeFH=90; treeFW=8; var ci:byte; branchFH,branchFW:byte; begin setFillStyle(1,6); bar(x,y-treeFH,x+treeFW,y); for ci:=1 to 6 do begin branchFH:=random(5)+1; branchFW:=random(8)+10; bar(x-branchFW,y-treeFH+ci*10,x,y-treeFH+ci*10+branchFH); bar(x+treeFW,y-treeFH+ci*10,x+treeFW+branchFW,y-treeFH+ci*10+branchFH); end; end; begin randomize; initgraph(gD,gR,''); drawHouse(100,280); drawHouse(230,270); drawHouse(430,290); drawHouse(330,180); drawTree(195,278); drawTree(325,275); drawTree(265,350); drawTree(360,290); drawTree(400,240); drawTree(580,285); drawTree(110,370); readln; closeGraph; end.
Каждому разряду восьмеричной системы соответствуют ровно 3 разряда двоичной, например, . Следовательно, четырехзначное восьмеричное число в двоичной системе будет лежать между числами 1 000 000 000 и 111 111 111 111 (включая). Теперь рассмотрим условие минимальности. Ясно, что первая группа двоичных разрядов должна быть одной единицей, т.к. в противном случае число не будет наименьшим. После этого должны следовать нули, т.к. из оставшихся кандидатов все числа, в которых на втором месте 0, меньше, чем те, у которых так 1. Аналогично, третье и четвертое место занимают 0. Значит, искомое число в двоичной системе выглядит так: 1 000 111 111. Соответственно, в восьмеричной системе это 1077, а в десятичной - 575.
Ввод Z ' заданное число - лимит суммы
S = 0 ' Здесь мы накапливаем сумму
n = 1 ' Счетчик элементов
Цикл, пока S <= Z
S = S + n
n = n + 1
Конец цикла пока
n = n - 1 ' на выходе получилось число на 1 больше максимального, уменьшаем
Объявляем массив A(n)
Цикл по i от 1 до n
A(i) = i
Вывод A(i)
Конец цикла по i
Вывод S; n
Конец