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 ≤ 104
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;
}
Good
ReplyDeleteGood job keep it up
ReplyDeleteGreat
ReplyDeleteGood work.
ReplyDeleteGood job keep it up
ReplyDeleteGreat job keep it up
ReplyDeleteVry good job lage raho
ReplyDelete