Cod sursa(job #1235912)

Utilizator touristGennady Korotkevich tourist Data 30 septembrie 2014 21:47:03
Problema Mins Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <cstdio>
#include <algorithm>
#define Nmax 1000005

using namespace std;

int ciur[Nmax];

int main()
{
    long long sol;
    int c,d,aux,i,j;
    freopen ("mins.in","r",stdin);
    freopen ("mins.out","w",stdout);
    scanf("%d%d", &c,&d);
    --c; --d;
    sol=1LL*c*d; aux=max(c,d);
    for(i=2;i<=aux;++i)
        if(!ciur[i])
        {
            sol-=1LL*(c/i)*(d/i);
            for(j=i*2;j<=aux;j+=i)
                ++ciur[j];
        }
        else
        {
            if(ciur[i]>=2)
            {
                sol+=1LL*(c/i)*(d/i)*(ciur[i]-1);
                for(j=i*2;j<=aux;j+=i)
                    --ciur[j];
            }
        }
    printf("%lld\n", sol);
    return 0;
}