Cod sursa(job #3155831)

Utilizator BurloiEmilAndreiBurloi Emil Andrei BurloiEmilAndrei Data 9 octombrie 2023 20:35:03
Problema Pascal Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.33 kb
#include <bits/stdc++.h>
using namespace std;

ifstream fin("pascal.in");
ofstream fout("pascal.out");

const int MAXR = 5e6;

int primeNums[3] = {2, 3, 5}, ans[3][MAXR + 5];

int main() {
    int r, d, num, copR, cnt, i, rasp;

    fin >> r >> d;

    for (num = 0; num < 3; num++) {
        for (i = primeNums[num]; i <= r; i += primeNums[num]) {
            ans[num][i] = ans[num][i / primeNums[num]] + 1;
        }

        for (i = primeNums[num]; i <= r; i++) {  // Insumam
            ans[num][i] += ans[num][i - 1];
        }
    }

    rasp = 0;
    for (i = 0; i <= r; i++) {
        if(d == 2){
            if(ans[0][r] - ans[0][r - i] - ans[0][i] >= 1) {
                ++rasp;
            }
        } else if(d == 3){
            if(ans[1][r] - ans[1][r - i] - ans[1][i] >= 1) {
                ++rasp;
            }
        } else if(d == 4){
            if(ans[0][r] - ans[0][r - i] - ans[0][i] >= 2) {
                ++rasp;
            }
        } else if(d == 5){
            if(ans[2][r] - ans[2][r - i] - ans[2][i] >= 1) {
                ++rasp;
            }
        } else if(d == 6){
            if( (ans[0][r] - ans[0][r - i] - ans[0][i] >= 1) || (ans[1][r] - ans[1][r - i] - ans[1][i] >= 1) ) {
                ++rasp;
            }
        }
    }

    fout << rasp;
    return 0;
}