Cod sursa(job #484026)

Utilizator DraStiKDragos Oprica DraStiK Data 11 septembrie 2010 16:49:25
Problema Mins Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <algorithm>
#include <vector>
#include <bitset>
using namespace std;

#define pb push_back
#define DIM 1000005

vector <int> prim;
bitset <DIM> viz;
long long nrt;
int c,d;

void init ()
{
    int i,j;

    scanf ("%d%d",&c,&d);
    --c; --d;
    if (c>d)
        swap (c,d);
    for (i=2; i<=d; ++i)
        if (!viz[i])
        {
            prim.pb (i);
            for (j=i+i; j<=d; j+=i)
                viz[j]=1;
        }
}

void back (int k,int prod,int pas)
{
    if (k==(int)prim.size () || c<1LL*prod*prim[k])
    {
        if (pas&1)
            nrt-=1LL*(d/prod)*(c/prod);
        else
            nrt+=1LL*(d/prod)*(c/prod);
    }
    else
    {
        back (k+1,prod*prim[k],pas^1);
        back (k+1,prod,pas);
    }
}

int main ()
{
    freopen ("mins.in","r",stdin);
    freopen ("mins.out","w",stdout);

    init ();
    back (0,1,0);
    printf ("%lld",nrt);

    return 0;
}