Phyton3.Ученик принес K конфет в класс. Он хочет раздать все конфеты поровну между N одноклассников, но конфет может не достаться всем в равном количестве. Некоторым ученикам достанется на 1 меньше. Напишите программу, которая вычислит скольким ученикам достанется на 1 конфету меньше. Вводные данные: на первой строке число N, количество учеников в классе. Второе число
Формула красивая, короткая, но неудобная для вычисления. В самом деле, надо найти три факториала, каждый из которых может оказаться достаточно большим числом. Но можно сделать небольшое преобразование и упростить вычисление.
Но это было вычисление R только для конкретного k при заданном n.
Нам же нужно найти сумму R для всех k от 2 до n. И да, для k=n формула не предназначена, но зато мы и так понимаем, что для такого случая R=1.
Задача свелась к нахождению обычной суммы
// PascalABC.NET 3.2, сборка 1370 от 24.12.2016
// Внимание! Если программа не работает, обновите версию!
function C(n,k:integer):integer;
begin
if n=k then Result:=1
else begin
var p:=1.0;
for var i:=1 to n-k do p:=p*(k+i)/i;
Result:=Round(p);
end;
end;
begin
var n:=ReadInteger('Кол-во продуктов: ');
var s:=1;
for var i:=2 to n-1 do s:=s+C(n,i);
Writeln('Кол-во салатов: ',s)
end.
Примеры:
Кол-во продуктов: 3
Кол-во салатов: 4
Кол-во продуктов: 5
Кол-во салатов: 26
Кол-во продуктов: 10
Кол-во салатов: 1013
function FS(a,b:real):=0.5*a*b;
begin
var a,b:real;
Write('Катеты первого треугольника: '); Read(a,b);
var S1:=FS(a,b);
Write('Катеты второго треугольника: '); Read(a,b);
var S2:=FS(a,b);
if S1>S2 then Writeln('Площадь первого треугольника больше')
else
if S1<S2 then Writeln('Площадь второго треугольника больше')
else Writeln('Площади треугольников равны')
end.
Тестовое решение
Катеты первого треугольника: 4.18 6
Катеты второго треугольника: 5.4 3.9
Площадь первого треугольника больше