Условие:
program MPlus;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils;
var
Count: Integer = 0;
m, n: Integer;
i, j: Integer;
begin
writeln('Enter m, n:');
readln(m, n);
for i := 1 to m do
for j := i to n do
Inc(Count);
writeln('Count = ', Count);
end.
Возможны 3 варианта:
При m<n, Count = (m * (m + 1)) / 2
При m>n, Count = (n * (n + 1)) / 2 + (m - n) * n
Упростим:
При m<=n, Count = (m * (m + 1)) / 2
При m>n, Count = (n * (n + 1)) / 2 + (m - n) * n
Итоговая формула:
В виде исходного кода:
function MPlus(n, m: Integer): Integer;
begin
if n >= m then
Result := (m * (m + 1)) div 2
else
Result := (n * (n + 1)) div 2 + (m - n) * n;
end;
Возможный исходный код(Object Pascal):for (i = 1; i <= n; i++)
for (j = i; j <= m; j++)Выведите формулу для этой суммы.тело цикло выполняется m + ( m - 1) + ( m - 2 ) + ... + ( m - (n - 1) ) раз
[Если m=n то это просто 1+2+...+n (ранее мы выводили это "диагоналями")]
program MPlus;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils;
var
Count: Integer = 0;
m, n: Integer;
i, j: Integer;
begin
writeln('Enter m, n:');
readln(m, n);
for i := 1 to m do
for j := i to n do
Inc(Count);
writeln('Count = ', Count);
end.
Возможны 3 варианта:
- m=n
- m<n
- m>n
При m<n, Count = (m * (m + 1)) / 2
При m>n, Count = (n * (n + 1)) / 2 + (m - n) * n
Упростим:
При m<=n, Count = (m * (m + 1)) / 2
При m>n, Count = (n * (n + 1)) / 2 + (m - n) * n
Итоговая формула:
В виде исходного кода:
function MPlus(n, m: Integer): Integer;
begin
if n >= m then
Result := (m * (m + 1)) div 2
else
Result := (n * (n + 1)) div 2 + (m - n) * n;
end;




Комментариев нет:
Отправить комментарий