Cod sursa(job #2347887)

Utilizator zettaIonel Herescu zetta Data 19 februarie 2019 10:50:29
Problema Pascal Scor 10
Compilator java Status done
Runda Arhiva de probleme Marime 1.89 kb
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.net.URISyntaxException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;

public class Main {

	private static final String IN_FILE = "pascal.in";
	private static final String OUT_FILE = "pascal.out";

	public static void main(String[] args) {
		try {
			final String inData = readIn();
			final String[] inDataParts = inData.split(" ");
			if (inDataParts.length < 2) {
				throw new IllegalArgumentException(
						"Expected 2 arguments separated by space on the first line. Found only " + inDataParts.length);
			}

			final Integer rowNumber = Integer.parseInt(inDataParts[0]);
			final Integer divisibleToThis = Integer.parseInt(inDataParts[1]);

			final int count = generatePascalRow(rowNumber, divisibleToThis);

			writeResult(count);
		} catch (Exception e) {
			e.printStackTrace();
			System.err.println("Error during execution");
		}
	}

	private static int generatePascalRow(Integer rowNumber, Integer divisibleBy) {
		int count = 0;
		int prevElement = 1;
		if (prevElement % divisibleBy == 0) {
			count++;
		}
		for (int i = 0; i < rowNumber / 2; i++) {
			final int currentElement = prevElement * (rowNumber - i) / (i + 1);
			System.out.println(currentElement);
			prevElement = currentElement;
			if (currentElement % divisibleBy == 0) {
				count+=2;
			}
		}
		return count;
	}

	private static String readIn() throws IOException, URISyntaxException {
		final Path p = Paths.get(IN_FILE);
		final List<String> lines = Files.readAllLines(p);

		if (lines.size() == 0) {
			throw new IllegalArgumentException("Empty file");
		}

		return lines.get(0);
	}

	public static void writeResult(int count) throws IOException {
		BufferedWriter writer = new BufferedWriter(new FileWriter(OUT_FILE));
		writer.write(Integer.toString(count));
		writer.close();
	}
}