This is Discussion thread about A Factorial Problem
Discussion About A Factorial Problem
Hi I am trying to solve this problem https://hack.codingblocks.com/app/dcb/897
However i am getting a Time limit exceed problem , probably because of large factorials, please check my code below and let me know how can i improve. Thans
#include<bits/stdc++.h>
using namespace std;
long long int fact(long long int data)
{ long long int ans=1;
while(data>0)
{
ans=ans*data;
--data;
}
return ans;
}
int main()
{
int turns;
cin>>turns;
while(turns>0)
{
long long int n,k,ans;
//long long int k;
cin>>n>>k;
//long long int eq= fact(n)%pow(k,x);
long long int count=0;
//cout<<fact(k);
for (long long int x = n/2; x <=n; ++x)
{ long long int power=pow(k,x);
ans=x;
if((long long int)fact(n)% (power) ==0)
{
++count;
} //cout<<fact(n)% (power)<<" "<<x<<endl;
if(count>0)
{long long int power=pow(k,x+1);
if(fact(n)%(power) !=0)
{break;
}
}
}cout<<ans<<endl;
--turns;
}
return 0;
}