Uva 568 - Just the Facts
import java.util.*;
import java.math.*;
class Main
{
public static void main (String[] args)
{
Scanner in = new Scanner(System.in);
BigInteger fact[] = new BigInteger[100006];
BigInteger f=fact[0]=BigInteger.ONE;
for(int i=1;i<=10000;i++)
{
fact[i] = f.multiply(BigInteger.valueOf(i));
f=fact[i];
}
while(in.hasNext())
{
int n = in.nextInt();
//System.out.println(fact[n]);
BigInteger val=fact[n],lst=BigInteger.ZERO;
while(lst == BigInteger.ZERO)
{
lst=val.mod(BigInteger.TEN);
val=val.divide(BigInteger.TEN);
}
if(n<10)
{
System.out.println(" " + n + " -> " + lst);
}
else if(n<100)
{
System.out.println(" " + n + " -> " + lst);
}
else if(n<1000)
{
System.out.println(" " + n + " -> " + lst);
}
else if(n<10000)
{
System.out.println(" " + n + " -> " + lst);
}
else
{
System.out.println(n + " -> " + lst);
}
}
}
}
Again !!!
import java.util.*;
import java.math.*;
class Main
{
public static void main (String[] args)
{
Scanner in = new Scanner(System.in);
BigInteger fact[] = new BigInteger[100006];
BigInteger f=fact[0]=BigInteger.ONE;
for(int i=1;i<=10000;i++)
{
fact[i] = f.multiply(BigInteger.valueOf(i));
f=fact[i];
}
while(in.hasNext())
{
int n = in.nextInt();
//System.out.println(fact[n]);
BigInteger a=fact[n],b=fact[n],lst=BigInteger.ZERO;
while(a!=BigInteger.ZERO)
{
a=a.mod(BigInteger.TEN);
lst=a;
if(lst!=BigInteger.ZERO)
{
break;
}
b=b.divide(BigInteger.TEN);
a=b;
}
if(n<10)
{
System.out.println(" " + n + " -> " + lst);
}
else if(n<100)
{
System.out.println(" " + n + " -> " + lst);
}
else if(n<1000)
{
System.out.println(" " + n + " -> " + lst);
}
else if(n<10000)
{
System.out.println(" " + n + " -> " + lst);
}
else
{
System.out.println(n + " -> " + lst);
}
}
}
}
Comments
Post a Comment