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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.88
Bringoff
СуперМодулятор
132 / 131 / 15
Регистрация: 03.11.2012
Сообщений: 974
#1

Количество цифр в факториале - C++

17.02.2013, 18:41. Просмотров 2110. Ответов 10
Метки нет (Все метки)

Найти количество цифр в записи факториала натурального числа N.
Не дружу с длинной арифметикой.
Ограничение - факториал 1000000 за 5 секунд!!! Как это можно?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.02.2013, 18:41     Количество цифр в факториале
Посмотрите здесь:

Сумма цифр и количество цифр C++
количество цифр C++
Напишите программу, выводящую на экран количество цифр в этом числе и сумму этих цифр C++
C++ В последовательности символов подсчитать количество букв и количество цифр
Вывести слово, содержащее наибольшее количество цифр и вывести число цифр в слове C++
C++ Подсчитать количество "счастливых" шестизначных автобусных билетов(сумма первых трех цифр равна сумме трех последних цифр)
Количество цифр в последовательности C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Sigma214
37 / 38 / 8
Регистрация: 01.05.2012
Сообщений: 151
17.02.2013, 19:03     Количество цифр в факториале #2
Вроде бы так(точно не уверен):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "stdafx.h"
#include <iostream>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    int i;
    double n=1;
    for (i=1;i<1000001;i++)
    {
        n=i*i;
        i++;
    }
    cout << "factorial(1000000)= " << n << endl;
    return n;
}
Somebody
2776 / 1590 / 142
Регистрация: 03.12.2007
Сообщений: 4,164
Завершенные тесты: 1
17.02.2013, 19:21     Количество цифр в факториале #3
http://oeis.org/A034886
C++
1
2
3
4
5
6
7
unsigned f(unsigned n)
{
    const double
        pi = 3.14159265358979323846,
        e = 2.7182818284590452354;
    return std::ceil(std::log10(2 * pi * n) / 2 + n * (std::log10(n / e)));
}
Как оно работает, не знаю. Но работает.
Bringoff
СуперМодулятор
132 / 131 / 15
Регистрация: 03.11.2012
Сообщений: 974
17.02.2013, 19:25  [ТС]     Количество цифр в факториале #4
Цитата Сообщение от Somebody Посмотреть сообщение
Как оно работает, не знаю. Но работает.
Это формула Стирлинга. А количество как сделать? В С++ новичек. Совсем.

Добавлено через 1 минуту
Цитата Сообщение от Sigma214 Посмотреть сообщение
Вроде бы так
Не так...
Somebody
2776 / 1590 / 142
Регистрация: 03.12.2007
Сообщений: 4,164
Завершенные тесты: 1
17.02.2013, 19:32     Количество цифр в факториале #5
Цитата Сообщение от Izobara Посмотреть сообщение
А количество как сделать?
В смысле "количество"?
Bringoff
СуперМодулятор
132 / 131 / 15
Регистрация: 03.11.2012
Сообщений: 974
17.02.2013, 19:39  [ТС]     Количество цифр в факториале #6
Цитата Сообщение от Somebody Посмотреть сообщение
"количество"?
Количество цифр в факториале.
diagon
Higher
1921 / 1187 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
17.02.2013, 19:46     Количество цифр в факториале #7
Цитата Сообщение от Izobara Посмотреть сообщение
Количество цифр в факториале.
log10
Bringoff
СуперМодулятор
132 / 131 / 15
Регистрация: 03.11.2012
Сообщений: 974
17.02.2013, 19:47  [ТС]     Количество цифр в факториале #8
Цитата Сообщение от diagon Посмотреть сообщение
log10
Можно по-русски? Точнее, по С++-сски
diagon
Higher
1921 / 1187 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
17.02.2013, 19:52     Количество цифр в факториале #9
Цитата Сообщение от Izobara Посмотреть сообщение
Можно по-русски? Точнее, по С++-сск
Ну, log10(n) == количество цифр в числе n.
Если по формуле Стирлинга найти факториал, а затем применить к нему log10, то получится примерное число цифр в этом факториале.
Ну и по свойствам логарифмов можно увеличить точность ответа.
Somebody
2776 / 1590 / 142
Регистрация: 03.12.2007
Сообщений: 4,164
Завершенные тесты: 1
17.02.2013, 19:52     Количество цифр в факториале #10
Так это же и есть формула для количества цифр.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.02.2013, 19:59     Количество цифр в факториале
Еще ссылки по теме:

Гипотеза Симона о факториале C++
C++ Создать файл, ввести символы, вывести на экран количество не латинских букв, количество цифр
Рекурсия: количество цифр в числе, сумма цифр и реверс числа C++
C++ Найти сумму делитей. Подсчитать сумму цифр числа. Количество цифр
Операции с текстом (длина, количество цифр, количество букв) C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Bringoff
СуперМодулятор
132 / 131 / 15
Регистрация: 03.11.2012
Сообщений: 974
17.02.2013, 19:59  [ТС]     Количество цифр в факториале #11

Работает!!!!
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
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
unsigned f(unsigned n)
{
    const double
        pi = 3.14159265358979323846,
        e = 2.7182818284590452354;
        if (n==1)
        {
            return 1;
        }
        else
        {
            return std::ceil(std::log10(2 * pi * n) / 2 + n * (std::log10(n / e)));
        }
}
int main()
{
    unsigned n;
    cin>>n;
    cout<<f(n);
}
Yandex
Объявления
17.02.2013, 19:59     Количество цифр в факториале
Ответ Создать тему
Опции темы

Текущее время: 07:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru