Cod sursa(job #850442)

Utilizator DaNutZ2UuUUBB Bora Dan DaNutZ2UuU Data 8 ianuarie 2013 15:48:43
Problema Mins Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <fstream>

using namespace std;

const char InFile[]="mins.in";
const char OutFile[]="mins.out";
const int MaxM=1000001;

ifstream fin(InFile);
ofstream fout(OutFile);

long long c, d, sol;
int M, P[MaxM];
char D[MaxM];

int main()
{
    fin >> c >> d;
    fin.close();

    M = max(c , d);
    for(int i = 2; i < M; ++i)
    {
        if(!P[i])
        {
            for(int j = i; j < M; j += i)
            {
                ++P[j];
                if((j / i) % i == 0)
                {
                    D[j] = 1;
                }
            }
        }
    }

    --c;
    --d;
    sol = c * d;
    for(int i = 2; i < M; ++i)
    {
        if(!D[i])
        {
            if(P[i] & 1)
            {
                sol -= (c / i) * (d / i);
            }

            else
            {
                sol += (c / i) * (d / i);
            }
        }
    }
    fout << sol;
    fout.close();
    return 0;
}