Pagini recente » Cod sursa (job #2229049) | Cod sursa (job #1625746) | Istoria paginii runda/antrenamentoji-oni/clasament | Cod sursa (job #1687300) | Cod sursa (job #2347898)
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.math.BigDecimal;
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 int rowNumber = Integer.parseInt(inDataParts[0]);
final int 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(int rowNumber, int divisibleBy) {
int count = 0;
BigDecimal remainder = new BigDecimal(divisibleBy);
BigDecimal prevElement = new BigDecimal(1);
if (prevElement.remainder(remainder).equals(BigDecimal.ZERO)) {
count += 2;
}
for (int i = 0; i < rowNumber / 2; i++) {
final BigDecimal currentElement = prevElement.multiply(new BigDecimal(rowNumber - i)).divide(new BigDecimal(i + 1));
System.out.println(currentElement);
prevElement = currentElement;
if (currentElement.remainder(remainder).equals(BigDecimal.ZERO)) {
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();
}
}