Cod sursa(job #1821996)

Utilizator v_silviuVlasceanu Silviu v_silviu Data 4 decembrie 2016 00:37:54
Problema Factorial Scor 15
Compilator java Status done
Runda Arhiva de probleme Marime 1.56 kb
import java.io.*;
import java.util.Scanner;

class Main {

    public static void main(String[] args) throws IOException {
        Scanner reader = new Scanner(new FileInputStream("fact.in"));

        int p = reader.nextInt();
        int N = -2;

        if (p == 0) N = 1;
        else if (p <= 4) N = p * 5;
        else if (p == 5) N = -1;
        else {
            int seed = 6;
            int seedPos = 1;
            int nextSeed;

            while (seed < Math.pow(10, 8)) {
                nextSeed = seed * 5 + 1;
                ++seedPos;

                if (seed == p) {
                    N = (int) Math.pow(5, seedPos);
                    break;
                } else if (seed < p && p < nextSeed - seedPos) {
                    int leftSeedNeighbor = seed - 1;
                    int copyOfP = p;

                    while ((copyOfP - leftSeedNeighbor) % 6 != 0) --copyOfP;

                    if (copyOfP == p) {
                        N = -1;
                        break;
                    }

                    int multiplicationFactor = (copyOfP - leftSeedNeighbor) / 6;
                    N = (p - multiplicationFactor - leftSeedNeighbor / 5) * 5;
                    break;
                } else if (nextSeed - seedPos <= p && p < nextSeed) {
                    N = -1;
                    break;
                }
                seed = nextSeed;
            }
        }

        BufferedWriter writer = new BufferedWriter(new FileWriter("fact.out"));
        writer.write(String.valueOf(N));
        writer.close();
        reader.close();
    }

}