#include <iostream>
#include <string>
#include <cmath>
using namespace std;
int main()
{
int n, k, g;
float fact;
cin >> n;
fact = sqrt(3.14159265359)*pow(n/2.7182818284, n);
fact *= pow(((8*n + 4)*n + 1)*n + (float)1/30, (float)1/6);
k=floor(fact);
g=k%1000000000;
cout << g << "\n";
};
Моя программа вычисляет значение n! modulo 1000000000. При малых значениях n он работает хорошо. Но для более крупных он постоянно выводит -147483648. Что случилось с моим кодом?Неверный выход - аппроксимация Рамануджана факториала и C++
Великими, так который тип данные следует использовать? В моем учебнике на C++ особенно рекомендуются плавания для таких целей. – VanDerWarden
Какой ваш максимум для n? –
Ровно 1 000 000 000. – VanDerWarden