Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Факториал

3.6K
14 ноября 2006 года
CrazyTimon
125 / / 13.02.2006
Вот собственно задача:
------------------------------------------------
Найти то минимальное количество слагаемых(сомножителей),при котором значения следующих сумм(произведений)превысят некоторое заданное М:
1!+3!+5!+..+(2*n-1)!
------------------------------------------------
З.ы. -я на первом курсе....в программировании боле менее соображаю,а вот чё такое факториал не знаю ваааще!!=(((школа у меня дибильная была,вот и всплывают такие дибильные проблемы как сейчас!
257
14 ноября 2006 года
kosfiz
1.6K / / 18.09.2005
Код:
function factorial(a:integer):integer;
var j,x:integer;
begin
x:=1;
for j:=1 to a do
x:=x*j;
result:=x;
end;

var sum,i,n,j,m:integer;
begin
i:=0;
sum:=0;
readln(m);
while sum<m do
begin
inc(i);
sum:=sum+factorial(2*i-1);
end;
writeln(sum,' ',i);
readln;
end.
261
14 ноября 2006 года
ahilles
1.5K / / 03.11.2005
для начала объясню что такое факториал
n!= 1*2*3*4*.....*(n-1)*n;

3!=1*2*3;
6!=1*2*3*4*5*6;
функцию получения факториала можно учучшить

function fact(value:integer): DOUBLE;
begin
if value=0 then result:=1
else result:=value*fact(value-1);
end;
242
14 ноября 2006 года
Оlga
2.2K / / 04.02.2006
проверка на ноль действительно обязательна, по определению:
0! = 1 (как и написал в функции ahilles)

только рекурсия здесь вроде незачем.
3.0K
14 ноября 2006 года
Мerlin
267 / / 25.07.2006
Еще один вариант
Код:
program Pr;
var
  m, n, sum, ndx, fact: Integer;
begin
  Write('Vveidite M : ');
  ReadLn(m);
  sum := 1;
  n := 1;
  fact := 1;
  ndx := 1;
  while sum < m do begin
    Inc(n);
    fact := fact*(ndx+1)*(ndx+2);
    ndx := ndx + 2;
    sum := sum + fact;
  end;
  WriteLn('n = ', n);
  ReadLn;
end.
Или класс люкс :)
Код:
program pr;
var
  m, n, sum, ndx, fact: Integer;
  s, s2: string;
begin
  Write('Vvedite M : ');
  ReadLn(m);
  sum := 1;
  n := 1;
  fact := 1;
  ndx := 1;
  Write('1');
  s := '1!';
  while sum < m do begin
    Inc(n);
    fact := fact*(ndx+1)*(ndx+2);
    ndx := ndx + 2;
    Str(ndx, s2);
    s := s + ' + ' + s2 + '!';
    sum := sum + fact;
    Write('+', fact);
  end;
  WriteLn('>', m);
  Str(m, s2);
  s := s + ' > ' + s2;
  WriteLn(s);
  WriteLn('n = ', n);
  ReadLn;
end.
3.6K
18 ноября 2006 года
CrazyTimon
125 / / 13.02.2006
Всем спасибо фсе свабодны!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог