 # wa in fun with flooring factorial

can anybody tell on which cases my solution is failing

http://www.codechef.com/IOPC2014/problems/IOPC14A/

my code is

http://ideone.com/aU4Rug

thnx…

The basic problem with the code which I get is that the you haven’t taken the case when “re” variable of yours exceeds the value of its range of long long int i.e. as b is of the order of 10^18 and you are multiplying re variable by i which if of the order of 10^5. It is sure to exceed its limit sometime for higher values. Hence that needs to be handled.

1 Like

Take as test case:

1

100000 1000000000000000000

and print re’s value by using a slight modification to your code:

``````
#include <iostream>
#include <algorithm>
#define ll long long int
using namespace std;

int main()
{
int t;
cin>>t;
while(t--)
{
ll i,j,k,l,m,n,b,odd=0,re=1;
cin>>n>>b;
for(i=0;i<=n;i++)
{
if(i==0)
re=1;
else
re*=i;
cout<<re<<endl;
if(re>=b)
{
ll temp;
temp=re/b;
re=re%b;
if(temp%2==1)
{
if(i!=n)
{
if(i%2==0&&(i+2)>n)
{
odd++;
}
}
else if(i==n)
{
odd++;
}
}
}
}
if(odd%2==0)
{
cout<<"Even\n";
}
else
{
cout<<"Odd\n";
}
}
return 0;
}

``````

You can see that something is wrong with re’s value.

1 Like

Oh completely forgot to check the overflow …thanx for help …got it was required to use modular multiplucation…

//