Cod sursa(job #635050)

Utilizator deneoAdrian Craciun deneo Data 18 noiembrie 2011 12:02:14
Problema Mins Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <fstream>
#include <algorithm>
using namespace std;

#define unusable -100000

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

int main ()
{
    long long i, j, minim = 0;
	freopen ("mins.in", "r", stdin);
	freopen ("mins.out", "w", stdout);

	scanf ("%d %d", &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 -= (n / i) * (m / i);
			else
				sol +=(n / i) * (m / i);
        }
    printf("%lld", sol + n * m);
    return 0;
}