Digits in Factorial

Problem Statement: Given an integer N. The task is to find the number of digits that appear in its factorial, where factorial is defined as, factorial(n) = 1*2*3*4……..*N and factorial(0) = 1.

Example 1:

Input:
N = 5
Output: 3
Explanation: Factorial of 5 is 120.
Number of digits in 120 is 3 (1, 2, and 0)

Example 2:

Input:
N = 120
Output: 199
Explanation: The number of digits in
200! is 199

Your Task:
You don't need to read input or print anything. Your task is to complete the function digitsInFactorial() that takes N as parameter and returns number of digits in factorial of N.

Expected Time Complexity : O(N)
Expected Auxilliary Space : O(1)

Constraints:
1 ≤ N ≤ 10


The link of this problem is https://practice.geeksforgeeks.org/problems/digits-in-factorial/1

Solution:

Python3

import math

def digitsInFactorial(N):

    sum1=0

    for i in range(1,N+1):

        sum1+=math.log10(i)

    return math.floor(sum1)+1

def main():

    T=int(input())

    while(T>0):

        N=int(input())

        print(digitsInFactorial(N))

        T-=1

if __name__=="__main__":

    main()


CPP Solution 

#include<bits/stdc++.h>

using namespace std;

int digitsInFactorial(int N)

{

    double sum=0;

    for(int i=2;i<=N;i++)

    {

        sum=sum+log10(i);

    }

    return int(sum)+1;

}

int main()

{

    int T;

    cin>>T;

    while(T--)

    {

        int N;

        cin>>N;

        cout<<digitsInFactorial(N)<<endl;

    }

    return 0;

}

Comments

Post a Comment

Popular posts from this blog

Floyd Warshall algorithm and it's applications.

Design a tiny URL or URL Shortner