Cod sursa(job #2501021)

Utilizator AlexPascu007Pascu Ionut Alexandru AlexPascu007 Data 28 noiembrie 2019 22:58:02
Problema Pascal Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.36 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("pascal.in");
ofstream fout("pascal.out");
int r,d,i,f[6][5000010],a[6],b[6],sol,p2,p3,p5;
int main() {
	fin>>r>>d;
	//f[x][i]=exponentul lui x in dezvoltarea lui i
	for (i=2;i<=r;i++) {
		if (i%2==0)
            f[2][i]=f[2][i/2]+1;
		if (i%3==0)
            f[3][i]=f[3][i/3]+1;
		if (i%5==0)
            f[5][i]=f[5][i/5]+1;
	}
	//C(r,i)=r!/(r-i)!*i! si la fiecare pas inmultim cu (r-i+1)!/i!
	//daca p2,p3,p5 sunt > 0 la un pas, atunci numarul se imparte la 2,3,5 respectiv
    if (d==2) {
        for (i=1;i<=r;i++) {
            p2+=f[2][r-i+1]-f[2][i];
            if (p2>0)
                sol++;
        }
    }
    else if (d==3) {
        for (i=1;i<=r;i++) {
            p3+=f[3][r-i+1]-f[3][i];
            if (p3>0)
                sol++;
        }
    }
    else if (d==4) {
        for (i=1;i<=r;i++) {
            p2+=f[2][r-i+1]-f[2][i];
            if (p2>1)
                sol++;
        }
    }
    else if (d==5) {
        for (i=1;i<=r;i++) {
            p5+=f[5][r-i+1]-f[5][i];
            if (p5>0)
                sol++;
        }
    }
    else if (d==6) {
        for (i=1;i<=r;i++) {
            p2+=f[2][r-i+1]-f[2][i];
            p3+=f[3][r-i+1]-f[3][i];
            if (p2>0&&p3>0)
                sol++;
        }
    }
	fout<<sol;
	return 0;
}