Cod sursa(job #2802353)

Utilizator luiz_felipeLuiz Felipe luiz_felipe Data 17 noiembrie 2021 22:27:28
Problema Pascal Scor 0
Compilator java Status done
Runda Arhiva de probleme Marime 1.77 kb
package main;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.util.Scanner;

public class Pascal {

    private static final int[] v2 = new int[5000000];
    private static final int[] v3 = new int[5000000];
    private static final int[] v5 = new int[5000000];
    private static final int[] res = {0, 0, 0, 0, 0, 0};

    public static void main(String[] args) throws Exception {
        Scanner fin = new Scanner(new File("out/pascal.in"));
        int r = fin.nextInt();
        int d = fin.nextInt();
        int ans = 0;
        fin.close();
        for (int i = 1; i <= r; ++i) {
            if (i % 2 == 0) v2[i] = v2[i / 2] + 1;
            if (i % 3 == 0) v3[i] = v3[i / 3] + 1;
            if (i % 5 == 0) v5[i] = v5[i / 5] + 1;
        }
        for (int i = 2; i <= r; ++i) {
            v2[i] += v2[i - 1];
            v3[i] += v3[i - 1];
            v5[i] += v5[i - 1];
        }
        for (int i = 0; i <= r; ++i) {
            res[2] = v2[r] - v2[i] - v2[r - i];
            res[3] = v3[r] - v3[i] - v3[r - i];
            res[5] = v5[r] - v5[i] - v5[r - i];
            switch (d) {
                case 2:
                    if (res[2] != 0) ++ans;
                    break;
                case 3:
                    if (res[3] != 0) ++ans;
                    break;
                case 4:
                    if (res[4] > 1) ++ans;
                    break;
                case 5:
                    if (res[5] != 0) ++ans;
                    break;
                case 6:
                    if (res[2] != 0 && res[3] != 0) ++ans;
                    break;
            }
        }
        BufferedWriter fout = new BufferedWriter(new FileWriter("out/pascal.out"));
        fout.write(Integer.toString(ans));
        fout.close();
    }
}