Сборник задач с решениями на языке программирования Паскаль
Компьютер в первую секунду печатает на экране 1, во вторую – число 12, в третью – число 23. То есть, в каждую следующую секунду – на 11 больше, чем в предыдущую. В какую секунду впервые появится число, делящееся на 2009?
Найдите количество четных цифр в десятичной записи числа n.
Выясните, лежат ли на одной прямой точки А(x1, y1), B(x2, y2), C(x3, y3)
Точки лежат на одной прямой
x1, x2, x3, y1, y2, y3, z, n:real;
write (‘Введите координаты точки А ‘);
write (‘Введите координаты точки В ‘);
write (‘Введите координаты точки C ‘);
writeln (‘Точки лежат на одной прямой’)
writeln (‘Точки не лежат на одной прямой’);
Сообщество роботов живет по следующим законам: один раз в год они объединяются в полностью укомплектованные группы по 3 или 5 роботов (причем число групп из 3 роботов — максимально возможное). За год группа из 3 роботов собирает 5, а группа из 5 — 9 новых собратьев. Каждый робот живет 3 года после сборки. Известно начальное количество роботов (К7), все они только что собраны. Определить, сколько роботов будет через N лет.
write(‘количество роботов k=’); readln(k);
write(‘количество лет n=’); readln(n);
else if p=1 then begin x:=x-3; y:=2 end
writeln (‘Количество роботов — ’,s);
Суточный рацион коровы составляет a кг сена, b кг силоса и c кг комбикорма. В хозяйстве, содержащем стадо из k голов, осталось x центнеров сена, y тонн силоса и z мешков комбикорма по 50 кг. Сколько еще дней хозяйство сможет кормить коров по полному рациону.
Предприниматель, начав дело, взял кредит размером k рублей под p процентов годовых и вложил его в свое дело. По прогнозам, его дело должно давать прибыль r рублей в год. Сможет ли он накопить сумму, достаточную для погашения кредита, и если да, то через сколько лет?
if kol=50 then writeln (‘no’) else writeln (kol);
Дано два целых положительных числа: a и b. Требуется написать программу, которая находит цифру, на которую оканчивается число a^b.
writeln (‘Введите a’); readln (a);
writeln (‘Введите b’); readln (b);
Из одного порта в другой необходимо перевезти 15 различных грузов. Грузоподъемность судна, на котором будет проходить перевозка, 50 тонн. Грузы пронумерованы, и информация о массах грузов хранится в массиве М(15). Определить, сколько рейсов необходимо сделать судну, если грузы неделимы и могут перевозиться только подряд в порядке их нумерации. (Предполагается, что масса отдельного груза не превышает 50 тонн).
writeln (‘Потребовалось, k,’рейсов’);
Коммерсант, имея стартовый капитал k рублей, занялся торговлей, которая ежемесячно увеличивает капитал на p%. Через сколько лет он накопит сумму s, достаточную для покупки собственного магазина?
writeln (‘Введите стартовый капитал’);
writeln (‘Введите % увеличения капитала’);
writeln (‘Введите сумму, необходимую для покупки магазина’);
writeln (‘Количество лет -‘,int(n/12));
Число Цукермана – натуральное число, которое делится на произведение своих цифр, например: 175 делится на 1·7·5=35. Составить программу, которая выводит на экран все трехзначные числа Цукермана.
if (b 0) and (c 0) and (i mod (a * b * c) = 0) then writeln (i);
На конференцию приехало N человек. Для их перевоза выделили автомобили вместимостью К и М человек (без водителя). К гостинице автомобили подаются в таком порядке: сначала вместимостью К человек, потом – М человек и так далее. В автомобиле можно перевозить не более максимально допустимого количества пассажиров. Определить, сколько необходимо автомобилей для перевозки всех делегатов конференции.
writeln (‘Введите количество участников’);
writeln (‘Введите вместимость первого автомобиля’);
writeln (‘Введите вместимость второго автомобиля’);
if x mod 20 then N:=N-K else N:=N-M;
Имеется четыре коробки спичек и в каждой из них по 15 спичек. Номер коробки, из которой берется очередная спичка, выбирается случайно. Сколько спичек будет сожжено, прежде чем одна из коробок опустеет? Составить программу.
writeln (‘В коробке’, n, ‘закончились спички’);
writeln (‘Израсходовано спичек’, m);
Сформировать квадратную матрицу следующего вида.
Дано число типа byte. Проверить, является ли палиндромом его двоичное представление с учетом того, что сохранены старшие нули. Пример таких чисел: 102 (т. к. 102 = 0110 01102, а это палиндром), 129 (129 = 1000 00012) и т. д.
Даны два натуральных числа. Найти их наименьшее общее кратное.
Примечание: наименьшим общим кратным двух чисел m и n называется наименьшее натуральное число, которое делится на m и n. Обозначение: НОК(m, n)
Дана последовательность символов длины n (n = 1). Проверить баланс круглых скобок в этом выражении. Например, при вводе выражения (())() программа должна сообщить о правильности расстановки скобок, а при вводе выражения ((()) – о неправильности.
Примечание: сбалансированной скобочной записью называется символьное выражение, в котором каждой открывающей скобке соответствует закрывающая скобка правее и наоборот, каждой закрывающей скобке соответствует открывающая скобка левее.
Сколько существует упорядоченных пар натуральных чисел а и b, для которых известны их наибольший общий делитель d и их наименьшее общее кратное m?
function nod(a, b:integer):integer;
if ab then nod:=nod(a-b, b) else nod:=nod(a, b-a)
writeln (‘Введите НОД двух чисел d’);
writeln (‘Введите НОK двух чисел m’);
if ((nod(a, b)=d) and ((a*b div nod(a, b))=m)) then writeln (i, j);
Правительство гарантирует, что инфляция в новом году составит р% в месяц. Какого роста цен за год можно ожидать? Составить программу решения задачи.
Сложные проценты вычисляются по формуле .
writeln (‘Введите процент месячной инфляции’);
Факультету выделен стипендиальный фонд в размере f рублей в месяц. Результаты сессии таковы: «отличников», «хорошистов», «троечников». Повышенная стипендия (для отличников) составляет рублей, обычная — рублей; задолжники стипендии лишаются. Составить программу, определяющую сколько студентов каждой категории могут получать стипендию и каков будет остаток фонда на материальную помощь малоимущим студентам?
writeln (‘Введите размер фонда’);
writeln (‘Введите количество отличников, хорошистов и троечников’);
writeln (‘Введите размер стипендий’);
if fs1*n1 then k1:=n1 else k1:=f div s1;
if fs2*n2 then k2:=n2 else k2:=f div s2;
if fs2*n3 then k3:=n3 else k3:=f div s2;
writeln (‘Количество отличников, получивших стипендию=’,k1);
if k20 then writeln (‘Количество хорошистов, получивших стипендию= ‘,k2);
if k30 then writeln (‘Количество троечников, получивших стипендию =’,k3);
writeln (‘Фонд материальной помощи=’, f);
N коробок стоят по кругу. В i-ой коробке j змей. Каждую минуту змеи переползают в соседнюю коробку (из i-ой в i+1-ую), а из N-ой – в первую. Составить программу, определяющую количество змей в каждой коробке через М минут.
writeln (‘Введите количество коробок n’);
writeln (‘Введите количество минут m’);
if m=0 then begin j:=0; m:=n end else j:=n-m;
У Вас имеется в наличии 2000 рублей. Вам необходимо купить в общей сложности 200 предметов по следующим ценам: фломастеры — 20 рублей за упаковку, тетради общие — 10 рублей за штуку, стержни — 1,5 рубля за штуку. Вы должны потратить все деньги.
if (sum=2000) and (kol=200) then writeln(‘фломастеры -‘,x,’ тетради -‘, y, ‘ стержни -‘, z);
Имеется N точек, расположенных в произвольном порядке на плоскости. Найти две точки, расстояние между которыми наименьшее.
В книге N страниц. Составить программу подсчета количества десятичных цифр, требуемых для нумерации всех страниц книги. Нумерация проводится от 1 и далее.
writeln (‘Количество десятичных цифр=’ ,s);
Король Флатландии решил вырубить некоторые деревья, растущие перед его дворцом. Деревья перед дворцом короля посажены в ряд, всего там растет N деревьев, расстояния между соседними деревьями одинаковы.
После вырубки перед дворцом должно остаться M деревьев, и расстояния между соседними деревьями должны быть одинаковыми. Помогите королю выяснить, сколько существует способов вырубки деревьев.
Требуется написать программу, которая по заданным числам N и M определит, сколько существует способов вырубки некоторых из N деревьев так, чтобы после вырубки осталось M деревьев и соседние деревья находились на равном расстоянии друг от друга.
writeln (‘Количество способов вырубки деревьев=’, s);
Из элементов массива А(2n) получить массивы В(n) и C(n) следующим образом. Выбрать в массиве А два наиболее близких по значению элемента; меньший из них поместить в массив В, а больший – в массив С. Продолжить выбор из оставшихся элементов до полного заполнения массивов В и С.
8 0 10 4 1 99 3 15 2 11
Задача 26
Дан прямоугольник, длины сторон которого равны натуральным числам А и В. Составить программу, которая будет находить на сколько квадратов можно разрезать данный прямоугольник, если от него каждый раз отрезать квадрат наибольшей площади.
Пример
Входные данные | Результат |
7 5 | 5 * 5 — 1 2 * 2 — 2 1 * 1 — 2 5 |
Программа
program z26; var a,b,k,c:real; begin readln(a); readln(b); k:=0; while (a0)and (b0) do begin IF a begin c:=int(b/a); writeln(a, ‘ * ‘, a, ‘ — ‘, c); b:=b-c*a end ELSE begin c:=INT(a/b); writeln(b, ‘ * ‘, b, ‘ — ‘, c); a:=a-c*b; end; k:=k+c; end; writeln(‘Количество квадратов-‘,k); end.
Папа Карло, играя на шарманке, ежедневно зарабатывает у туристов 5 золотых (монет). Весь заработок уходит на обед папы Карло и его друзей в харчевне «Три пескаря», где плату принимают только деревянными (монетами). В меняльных лавках папу Карло не обслуживают. Банкир Карабас-Барабас для друзей папы Карло установил индивидуальные правила обмена золотых на деревянные в разных лавках (смотри таблицу). Каждый из друзей может обменять только один золотой и в каждой лавке могут обслужить только одного из друзей.
Таблица обмена одного золотого на деревянные
№ лавки | Буратино | Мальвина | Пьеро | Арлекино | Артемон |
1 | 12 | 13 | 10 | 7 | 8 |
2 | 10 | 11 | 9 | 7 | 9 |
3 | 11 | 10 | 9 | 8 | 4 |
4 | 10 | 11 | 8 | 10 | 5 |
5 | 7 | 12 | 10 | 9 | 7 |
Составить программу нахождения оптимального плана обмена 5 золотых на деревянные в виде: Буратино, N лавки; Мальвина, N лавки; Пьеро, N лавки; Арлекино, N лавки; Артемон, N лавки; количество полученных деревянных. В программе рассматривается =120 возможных вариантов обмена золотых монет на деревянные и выбирается оптимальный вариант обмена.
Программа
program z27; var Q:array[1..5,1..5]of integer; F:array[1..5] of integer; P:array[1..5] of string; a,b,c,d,e,N,i,S:integer; Begin N:=0; Q[1, 1]:=12; Q[1, 2]:=13; Q[1, 3]:=10; Q[1, 4]:=7; Q[1, 5]:=8; Q[2, 1]:=10; Q[2, 2]:=11; Q[2, 3]:=9; Q[2, 4]:=7; Q[2, 5]:=9; Q[3, 1]:=11; Q[3, 2]:=10; Q[3, 3]:=9; Q[3, 4]:=8; Q[3, 5]:=4; Q[4, 1]:=10; Q[4, 2]:=11; Q[4, 3]:=8; Q[4, 4]:=10; Q[4, 5]:=5; Q[5, 1]:=7; Q[5, 2]:=12; Q[5, 3]:=10; Q[5, 4]:=9; Q[5, 5]:=7; P[1]:=’Буратино’; P[2]:=’Мальвина’; P[3]:=’Пьеро’; P[4]:=’Арлекино’; P[5]:=’Артемон’; FOR a:=1 TO 5 do FOR b:=1 TO 5 do FOR c:=1 TO 5 do FOR d:=1 TO 5 do FOR e:=1 TO 5 do if (ab) AND (ac) AND (ad) AND (ae) AND (bc) AND (bd)AND (be) AND (cd) AND (ce) AND (de) then begin S:=Q[a, 1]+Q[b, 2]+Q[c, 3]+Q[d, 4]+Q[e, 5]; IF SN THEN begin F[1]:=A; F[2]:=B; F[3]:=C; F[4]:=D; F[5]:=E; N:=S; end; end; FOR i:=1 TO 5 do writeln (P[i], ‘ номер лавки — ‘, F[i], ‘ количество денег -‘, Q[F[i], i]); writeln (N); end.