Cod sursa(job #2347830)

Utilizator zettaIonel Herescu zetta Data 19 februarie 2019 10:02:44
Problema Pascal Scor 30
Compilator java Status done
Runda Arhiva de probleme Marime 1.94 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[] row = generatePascalRow(rowNumber);
			int countDivisibleBy2 = 0;
			for (Integer integer : row) {
				if (integer % divisibleToThis == 0) {
					countDivisibleBy2++;
				}
			}
			
			writeResult(countDivisibleBy2);
		} catch (Exception e) {
			e.printStackTrace();
			System.err.println("Error during execution");
		}
	}

	private static int[] generatePascalRow(Integer rowNumber) {
		int[] results = new int[] { 1 };
		for (int i = 0; i < rowNumber; i++) {
			int[] temp = new int[results.length + 1];
			temp[0] = 1;
			temp[temp.length - 1] = 1;

			for (int j = 1; j < temp.length - 1; j++) {
				temp[j] = results[j - 1] + results[j];
			}
			results = temp;
		}
		return results;
	}

	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();
	}
}