Cod sursa(job #2217844)

Utilizator alextodoranTodoran Alexandru Raul alextodoran Data 2 iulie 2018 13:27:22
Problema Pascal Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.37 kb
#include <bits/stdc++.h>

#define RM 5000002

using namespace std;

int r, m, k, c2, c3, c5;
int f2[RM];
int f3[RM];
int f5[RM];

int main()
{
    ifstream fin ("pascal.in");
    ofstream fout ("pascal.out");
    fin >> r >> m;
    if(m % 2 == 0)
    {
        for(int i = 1; i <= r; i++)
            if(i % 2)
                f2[i] = 0;
            else
                f2[i] = f2[i / 2] + 1;
        for(int i = 0; i <= r; i++)
            f2[i] += f2[i - 1];
    }
    if(m % 3 == 0)
    {
        for(int i = 1; i <= r; i++)
            if(i % 3)
                f3[i] = 0;
            else
                f3[i] = f3[i / 3] + 1;
        for(int i = 0; i <= r; i++)
            f3[i] += f3[i - 1];
    }
    if(m % 5 == 0)
    {
        for(int i = 1; i <= r; i++)
        if(i % 5)
            f5[i] = 0;
        else
            f5[i] = f5[i / 5] + 1;
        for(int i = 0; i <= r; i++)
            f5[i] += f5[i - 1];
    }
    if(m % 2 == 0)
        c2++;
    if(m % 3 == 0)
        c3++;
    if(m % 4 == 0)
        c2++;
    if(m % 5 == 0)
        c5++;
    for(int i = 0; i <= r; i++)
    {
        int e2, e3, e5;
        e2 = f2[r] - f2[i] - f2[r - i];
        e3 = f3[r] - f3[i] - f3[r - i];
        e5 = f5[r] - f5[i] - f5[r - i];
        k += (e2 >= c2 && e3 >= c3 && e5 >= c5);
    }
    fout << k << "\n";
    return 0;
}