Я пытаюсь выяснить, как решить эту проблему (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 цифр или что-то в этом роде, а потом справляюсь с ними, но я все еще не могу понять, как это сделать.
заранее спасибо!
Попробуй это
#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;
}
using namespace std
- плохая практика, используйте лучшие имена для переменных и определяйте переменные внутриfor
условияfor (int k=2;k<n+1;k++)