Факторная сумма цифр (без BigInt) Переполнение стека

Я пытаюсь выяснить, как решить эту проблему (Project Euler):

п! означает n × (n — 1) × … × 3 × 2 × 1

Например, 10! = 10 × 9 × … × 3 × 2 × 1 = 3628800, а сумма
цифры в номере 10! 3 + 6 + 2 + 8 + 8 + 0 + 0 = 27.

Найдите сумму цифр в числе 100!

Использование BigInt не вариант, я пытаюсь выяснить, как реализовать решение, используя только c ++.

Я подумал, может быть, разбить большие числа на массив длиной около 7 цифр или что-то в этом роде, а затем разобраться с ними, но я все еще не могу понять, как это сделать либо …

заранее спасибо!

0

Решение

Попробуй это

#include "iostream"#include "vector"
int n,remainder,sum;
int main ()
{
std::vector <int> digits(5000);
std::cin>>n;
digits[0]=1;
digits[1]=1;
for (int k=2;k<n+1;k++) {
for (int i=1;i<=digits[0];i++) {
digits[i]=digits[i]*k+remainder;
remainder=0;
if (digits[i]>9) {
remainder=digits[i]/10;
digits[i]%=10;
if (i==digits[0])
digits[0]++;
}
}
}
for (int i=digits[0];i>=1;i--)
sum+=digits[i];
std::cout<<sum;
}
2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector