Cod sursa(job #961712)

Utilizator XladhenianGrigorita Vlad-Stefan Xladhenian Data 12 iunie 2013 19:05:42
Problema Pascal Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.75 kb

#include <fstream>
#include <stdlib.h>
using namespace std;

long R,D;
char C2[5000001];
char C3[5000001];
char C5[5000001];

void ComputeCnt(long n,char *l,long lim)
{
    long s = n;
    while (s <= lim)
    {
        long p = s;
        while (p <= lim)
        {
            l[p] += 1;
            p += s;
        }
        s *= n;
    }
}

int main(void)
{
    fstream fin("pascal.in",ios::in);
    fstream fout("pascal.out",ios::out);

    ComputeCnt(2,C2,5000000);
    ComputeCnt(3,C3,5000000);
    ComputeCnt(5,C5,5000000);

    fin >> R >> D;
    
    long d2,d3,d5;
    d2 = d3 = d5 = 0;
    long f = 0;

    for (long i = 1;i <= R;i += 1)
    {
        d2 += C2[R - i + 1] - C2[i];
        d3 += C3[R - i + 1] - C3[i];
        d5 += C5[R - i + 1] - C5[i];
        switch (D)
        {
            case 2 :
            {
                if (d2 > 0)
                {
                    f += 1;
                }
            }
            break;
            case 3 :
            {
                if (d3 > 0)
                {
                    f += 1;
                }
            }
            break;
            case 4 :
            {
                if (d2 > 1)
                {
                    f += 1;
                }
            }
            break;
            case 5 :
            {
                if (d5 > 0)
                {
                    f += 1;
                }
            }
            break;
            case 6 :
            {
                if ((d2 > 0) && (d3 > 0))
                {
                    f += 1;
                }
            }
            break;
        }
    } 

    fout << f;

    fin.close();
    fout.close();
    return 0;
}