Find the sum of the digits in the number N!.
Example:
Input: 6 Output: 9 //i.e 6!=720 ,7+2+0=9
Approach
Java
public class FactorialDigitSum {public static void main(String[] args) {int n = 6;int fSum = factorial(n);System.out.println(fSum);}static int multiply(int x, int res[], int res_size) {int carry = 0;for (int i = 0; i < res_size; i++) {int prod = res[i] * x + carry;res[i] = prod % 10;carry = prod / 10;}while (carry > 0) {res[res_size] = carry % 10;carry = carry / 10;res_size++;}return res_size;}// function to find the factorial// of the given numberstatic int factorial(int n) {int res[] = new int[10000];res[0] = 1;int res_size = 1;for (int x = 2; x <= n; x++) {res_size = multiply(x, res, res_size);}int sum = 0;for (int i = res_size - 1; i >= 0; i--)sum += res[i];return sum;}}
C++
#include <bits/stdc++.h>using namespace std;#define MAX 10000int multiply(int x, int res[], int res_size){int carry = 0;for (int i=0; i<res_size; i++){int prod = res[i] * x + carry;res[i] = prod % 10;carry = prod/10;}while (carry){res[res_size] = carry%10;carry = carry/10;res_size++;}return res_size;}//function to find the factorial//of the given numberint factorial(int n){int res[MAX];res[0] = 1;int res_size = 1;for (int x=2; x<=n; x++){res_size = multiply(x, res, res_size);}int sum=0;for (int i=res_size-1; i>=0; i--)sum+=res[i];return sum;}int main(){int n=6;cout<<factorial(n);return 0;}
No comments:
Post a Comment