Во вложении приведен рисунок, из которого видно принятое расположение треугольника. Треугольник прямоугольный и уравнение его гипотенузы можно получить из формулы уравнения прямой в отрезках. Алгоритм решения следующий. 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.
1. Современное решение
// PascalABC.NET 3.2, сборка 1425 от 22.04.2017 // Внимание! Если программа не работает, обновите версию!
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.
Контрольный пример Введите значения a и b через пробел: 3 4.0 11
2. Школьное решение в стиле ТурбоПаскаль 1983г.
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.
N-odes-art-school410
20.11.2021
Из 24 можно получить 0 так: 24 --> 12 --> 6 --> 4 --> 2 --> 0 Итого 5 шагов Чтобы понять, что это самый короткий вариант, пойдём с конца: 0 --> 2 (так как умножать 0 на 2 не имеет смысла, то прибавляем 2) --> 4 (этот результат получается в любом случае) --> 6 (так как отсюда мы быстро получим число 12, которое является половиной от 24) --> 12 --> 24
Из 293 не получить 0, так как 293 - нечётное число
Из 297 можно получить 13 за 142 шага, так как 297 - нечётное число, а это значит, что можно только уменьшать на 2
Из 297 можно получить 43 за 127 шагов (аналогично предыдущему примеру)
Ответить на вопрос
Поделитесь своими знаниями, ответьте на вопрос:
построить парабулу в эксель (y-2)^2 =2 в диапозоне хт от -5 до с шагом 0.25
Алгоритм решения следующий.
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.
1. Современное решение
// PascalABC.NET 3.2, сборка 1425 от 22.04.2017
// Внимание! Если программа не работает, обновите версию!
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.
Контрольный пример
Введите значения a и b через пробел: 3 4.0
11
2. Школьное решение в стиле ТурбоПаскаль 1983г.
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.