1. 

**

* FWP, Ausgewählte Probleme aus dem ACM Programming Contest, SS10
* Problem: 568 - Just the Facts
* Link: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=100&page=show_problem&problem=509
* @author Viktoriya Ryabova
* @version 1.0, 04/02/2010
*
* Method : Ad-Hoc
* Status : accepted
* Runtime: 1.648
*/

 


import java.util.Scanner;

import java.math.BigInteger;

public class Main {
/**
* @param args
*/

public static void main(String[] args) {
//Scanner inizielisieren

Scanner read= new Scanner(System.in);
//einlesen solange die werte auf der konsele eingegeben werden

for(int i=0; read.hasNext(); i++){
int number = Integer.parseInt(read.nextLine());
//eingegebene Zahl musspositiv sein, aber kleiner als 10000

if (number>0&& number<10000){
//Fakultät der Zahl berechnen

String nmb= String.valueOf(calculateFactorial (number));
//Letztes Zeichen der Zahl, das nicht Null ist, auslesen

char nonZero =getNotZeroDigit (nmb, nmb.length()-1);
System.out.println(printFormat(number)+number+" -> "+ nonZero);
}
}
}

public static String calculateFactorial (int number){
BigInteger fact = BigInteger.ONE;
for (int i=1; i<= number; i++){
fact=fact.multiply(BigInteger.valueOf(i));
}
String result = String.valueOf(fact);
return result;
}

public static char getNotZeroDigit (String str, int length){
char nmb=0;
for (int i=length; i>=0;){
//Falls das letzte Zeichen Null ist, wird die Länger auf Eins gekürtzt und rekursiv aufgerufen

if(str.charAt(length)=='0'){
--length;
return getNotZeroDigit(str, length );
}
else{
nmb+= str.charAt(i);
return nmb;
}
}
return nmb;
}

public static String printFormat(int number){
//Leerzeichen vor der ursprunglichen Zahl

String spaceCount = String.valueOf(number);
String str="";
for (int i=1; i<6-spaceCount.length(); i++){
str += " ";
}
return str;
}
}
2.

/**
* FWP: Ausgewaehlte Probleme aus dem ACM (SS10)
*
* Method: Math
* Problem: 568 - JustTheFacts
* Accepted: 0.160
* @author Evgeni Pavlidis
*
*/
import java.io.*;
import java.util.*;

class Main {

private static HashMap<Integer, Integer> map = new HashMap<Integer,Integer>();

public static void main(String...args) throws Exception
{
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

int n, f = 1, j;
String input;

for(int i = 1; i <= 10000; i++)
{
j = i;
while(j % 10 == 0)
j /= 10;

f *= j;

while(f % 10 == 0)
f /= 10;

f = f % 100000;
map.put(i, f % 10);
//System.out.println(i + " => " + f);
}

while( (input = reader.readLine()) != null)
{
n = Integer.parseInt(input);
System.out.printf("%5d -> %d\n", n, map.get(n));
}
}
}