Cod sursa(job #2501013)

Utilizator AlexPascu007Pascu Ionut Alexandru AlexPascu007 Data 28 noiembrie 2019 22:40:45
Problema Pascal Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.49 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
	switch(d) {
        case 2: {
            for (i=1;i<=r;i++) {
                p2+=f[2][r-i+1]-f[2][i];
                if (p2>0)
                    sol++;
            }
        }
        case 3: {
            for (i=1;i<=r;i++) {
                p3+=f[3][r-i+1]-f[3][i];
                if (p3>0)
                    sol++;
            }
        }
        case 4: {
            for (i=1;i<=r;i++) {
                p2+=f[2][r-i+1]-f[2][i];
                if (p2>1)
                    sol++;
            }
        }
        case 5: {
            for (i=1;i<=r;i++) {
                p5+=f[5][r-i+1]-f[5][i];
                if (p5>0)
                    sol++;
            }
        }
        case 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;
}