Cod sursa(job #1782530)

Utilizator giotoPopescu Ioan gioto Data 18 octombrie 2016 11:35:48
Problema Pascal Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <cstdio>
using namespace std;

short L2[5000001], L5[5000001], L3[5000001];
int n, d;
int main()
{
    freopen("pascal.in", "r", stdin);
    freopen("pascal.out", "w", stdout);
    scanf("%d%d", &n, &d);
    for(int i = 2; i <= n ; i += 2) L2[i] += L2[i / 2] + 1;
    for(int i = 3; i <= n ; i += 3) L3[i] += L3[i / 3] + 1;
    for(int i = 5; i <= n ; i += 5) L5[i] += L5[i / 5] + 1;
    int P2 = 0, P3 = 0, P5 = 0, Sol = 0;
    for(int i = 1; i <= n ; ++i){
        P2 += L2[n - i + 1] - L2[i];
        P3 += L3[n - i + 1] - L3[i];
        P5 += L5[n - i + 1] - L5[i];
        switch(d){
            case 2:
                if(P2 > 0) ++ Sol;
                break;
            case 3:
                if(P3 > 0) ++ Sol;
                break;
            case 4:
                if(P2 > 1) ++ Sol;
                break;
            case 5:
                if(P5 > 0) ++ Sol;
                break;
            case 6:
                if(P2 > 0 && P3 > 0) ++ Sol;
        }
    }
    printf("%d", Sol);
}