Cod sursa(job #635045)

Utilizator deneoAdrian Craciun deneo Data 18 noiembrie 2011 11:56:01
Problema Mins Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <fstream>
#include <algorithm>
using namespace std;

#define unusable -100000

int n, m;
int d[1000001];
long long sol;

int main()
{
    int i, j, minim = 0;
    ifstream f("mins.in");
    ofstream g("mins.out");
    f >> n >> m;
    --n; --m;
    minim = min(n, m);
    for(i = 2; i <= minim; ++i)
        if(d[i] == 0)
        {
            for(j = i * i; j <= minim; j += i * i)
                d[j] = unusable;
            for(j = i; j <= minim; j += i)
                ++d[j];
        }
    for (i = 2; i <= minim; i ++)
		if (d[i] > 0)
        {
			if (d[i] & 1)
				sol -= (long long)((long long)n / i) * ((long long)m / i);
			else
				sol +=(long long)((long long)n / i) * ((long long)m / i);
        }
    g << sol + n * m << '\n';
    g.close();
    return 0;
}