Сколько точек с целыми координатами попадают в треугольникAOB находящийся в первой четверти? НАПИШИТЕ ПРОГРАММУ В ПАСКАЛЬ .ПОЖАЛ
Сколько точек с целыми координатами попадают в треугольникAOB находящийся в первой четверти? НАПИШИТЕ ПРОГРАММУ В ПАСКАЛЬ .ПОЖАЛУЙСТА!!!!!!!!!!!!!!!!!!!СРОЧНО!!!!!!!!!!!!!
Во вложении приведен рисунок, из которого видно принятое расположение треугольника. Треугольник прямоугольный и уравнение его гипотенузы можно получить из формулы уравнения прямой в отрезках. Алгоритм решения следующий. 1. Вводим значения a и b. 2. Очищаем переменную счетчика количества k нулём. 3. В цикле по х от 0 с шагом 1 до целой части b: - вычисляем целую часть y, найденного из приведенного уравнения - увеличиваем k на эту целую часть плюс 1 4. Выводим значение k.
Проверим этот алгоритм для нашего рисунка. a=3, b=4, y=³/₄(4-x), k=0 Для х=0 получаем у=3 и увеличиваем k на 3+1=4, т.е. k=4 Для х=1 получаем у=2.25, целая часть 2 и увеличиваем k на 2+1=3, т.е. k=7 Для х=2 получаем у=1.5, целая часть 1 и увеличиваем k на 1+1=2, т.е. k=9 Для х=3 получаем у=0.75, целая часть 0 и увеличиваем k на 0+1=1, т.е. k=10 Для х=4 получаем у=0, целая часть 0 и увеличиваем k на 0+1=1, т.е. k=11 Значение 11 выводим. Из рисунка видно, что точек действительно 11.
<em>1. Современное решение</em>
<em>// PascalABC.NET 3.2, сборка 1425 от 22.04.2017</em> <em>// Внимание! Если программа не работает, обновите версию!</em>
begin var a,b:real; Write('Введите значения a и b через пробел: '); Read(a,b); Writeln(Range(0,Trunc(b)).Select(x->Trunc(a/b*(b-x))+1).Sum) end.
<u>Контрольный пример</u> Введите значения a и b через пробел: 3 4.0 11
<em>2. Школьное решение в стиле ТурбоПаскаль 1983г.</em>
var a,b,y:real; k,x:integer; begin Write('Введите значения a и b через пробел: '); Read(a,b); k:=0; for x:=0 to Trunc(b) do begin y:=a/b*(b-x); k:=k+Trunc(y)+1 end; Writeln(k) end.
Решение далеко не самое эффективное, но зато очень простое: var a,b,x,y,k:integer; begin write('a, b:'); readln(a,b); k:=0; for x:=0 to a do for y:=0 to b do if y<=-(x-a)*b/a then k:=k+1; writeln('k = ',k); end.
Пример: <span>a, b: 4 3 k = 11
PS. Точки, лежащие на осях координат и на стороне AB, тоже подсчитываются. Если они не нужны, то циклы начинайте с 1 и в условии используйте строгое равенство.</span>
Т.к. он начинал с каталога второго уровня, а на уровень вниз спускался на один раз больше, чем поднимался наверх, то закончить он должен быть в каталоге третьего уровня.
Единственный каталог третьего уровня в ответах: 3) С:\Охота\Собаки\Гончие
begin
write('введите строку: ');
readln(s);
for i:=length(s) downto 1 do
if i mod 2=0 then
delete(s,i,1);
writeln('результирующая строка: ',s);
end.</span>
Первая бригада за 1 день делает 1/А часть работы, вторая бригада 1/В часть. Вместе они сделают 1/А + 1/В = (А + В) / (А*В) <span>Обе бригады сделают работу за (А*В) / (А + В) дней. </span>