Cod sursa(job #1753645)

Utilizator andreistanStan Andrei andreistan Data 6 septembrie 2016 20:24:30
Problema Mins Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
const int MAXN = 1000001;
int ciurn[MAXN],ciurp[MAXN];
ifstream f("mins.in");
ofstream g("mins.out");
int main()
{
    int c,d,n;
    long long card=0;
    f>>c>>d;
    c--;
    d--;
    n=min(c,d);
    for(int i=2; i<=n; i++)
    {
        if(ciurn[i]==0)
        {
            for(int j = i; j <= n; j += i)
                ciurn[j]++;
            long long patrat = 1LL * i * i;
            for(long long j = patrat; j <= n; j += patrat)
                ciurp[j] = 1;
        }
        if(ciurp[i]==0)
        {
            if(ciurn[i]%2==0)
                card-=1LL*(c/i)*(d/i);
            else
                card+=1LL*(c/i)*(d/i);
        }
    }
    g<<1LL*c*d-card;
    return 0;
}