Модуль действительно очень длинного числа (fmod)
Я хочу найти количество нулей в факториале, используя Cpp. Проблема в том, что я использую действительно большие числа.
<code>#include <stdio.h> #include <math.h> long zeroesInFact(long n) { long double fact=1; long double denominator=10.00; long double zero=0.0000; long z=0; printf("Strating loop with n %ld\n",n); for(int i=2;i<=n;i++) { fact=fact*i; printf("Looping with fact %LF\n",fact); } printf("Fmod %lf %d\n",fmod(fact,denominator),(fmod(fact,denominator)==zero)); while(fmod(fact,denominator)==zero) { fact=fact/10; z++; } printf("Number of zeroes is %ld\n",z); return z; } int main() { long n; long x; scanf("%ld",&n); for(int i=0;i<n;i++) { scanf("%ld",&x); printf("Calling func\n"); zeroesInFact(x); } return 0; } </code>
Я думаю, что проблема здесь в том, что
FMOD (факт, знаменатель) дает мне правильный ответ для факториала 22 и знаменателя как 10,00 (что составляет 0,000). Но это дает мне неправильный ответ для факториала 23 и знаменателя как 10.00