Форум программистов, компьютерный форум CyberForum.ru

Факториалы... - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Интерактивная сегментация http://www.cyberforum.ru/cpp-beginners/thread216711.html
Нужна программа для курсовой на любом языке программирования на тему: Интерактивная сегментация. Помогите, пожалуйста
C++ найти адрес первого нечетного числа в матрице for(int i=0;i<n;i++) for(int j=0;j<n;j++) { if(x%2!=0) { p=i; p=j; break; } } http://www.cyberforum.ru/cpp-beginners/thread216698.html
C++ цикл for
задача: Среди всех n-значных чисел (n = 1,2,3,4) указать те, сумма цифр которых равна данному числу k. # include <iostream.h> #include <conio.h> void main() { clrscr(); int i,j,n,k,l,d,v; cout<<"vvedite k i n"<<endl; cin>>k>>n; int n1=1; n2;
классы+друж. функции C++
Создать класс Time для работы со временем в формате «час:минута:секунда». Класс должен включать в себя не менее четырех функций инициализации: числами, строкой (например, «23:59:59»), секундами и временем. Обязательными операциями являются: вычисление разницы между двумя моментами времени в секундах, сложение времени и заданного количества секунд, ...
C++ типизир.файл http://www.cyberforum.ru/cpp-beginners/thread216690.html
задача: Дан файл из вещественных чисел. Описать функцию, возвращающую предпоследний элемент файла (если такой есть). # include <iostream.h> # include <stdio.h> float GetPlast() { FILE *f; float c=-1,r; f=fopen("text.txt","r"); while(!feof(f)) { r=c;
C++ распечатать список учителей. задача:Распечатать список тех учителей школы, которые преподают математику и информатику, указать стаж их работы и недельную нагрузку. #include<iostream.h> #include<conio.h> #include<stdlib.h> #include<string.h> void main() { clrscr(); struct teatcher{ подробнее

Показать сообщение отдельно
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
22.12.2010, 14:24     Факториалы...
Легко видеть, что http://www.cyberforum.ru/cgi-bin/latex.cgi?(\forall i \in [1, n]) \, 2 \cdot i \leq  n + n, значит, (n + i)! будет всегда делиться на (2i)! без остатка. Этим мы и воспользуемся.
Проверяй:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <stdio.h>
#include <stdlib.h>
 
typedef unsigned long long  ullong_t;
typedef long double     ldouble_t;
 
ullong_t product(size_t, size_t);
ldouble_t S(size_t);
void tabulate(size_t, size_t, size_t);
 
int main()
{
    tabulate(12, 24, 4);
    exit(0);
}
 
ullong_t product(size_t a, size_t b)
{
    ullong_t result = 1;
    while(a <= b)
        result *= a++;
        
    return result;
}
 
ldouble_t S(size_t n)
{
    if(!n)
    {
        fprintf(stderr, "n must be a positive non-zero number\n");
        exit(1);
    }
    size_t i = 1;
    ldouble_t sum = 0;
    while(i <= n)
    {
        sum += 1. / (ldouble_t) product(2 * i + 1, n + i);
        ++i;
    }
    
    return sum;
}
 
void tabulate(size_t a, size_t b, size_t step)
{
    for( ; a <= b; a += step)
        printf("S[%u] = %Lf\n", a, S(a));
}
Вроде переполнения не должно быть.

igorrr37, во-первых, ты неправильно понял задание, во-вторых, 48 факториал уж точно ни в какую переменную не влезет
 
Текущее время: 22:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru