Cod sursa(job #635049)

Utilizator deneoAdrian Craciun deneo Data 18 noiembrie 2011 11:59:36
Problema Mins Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb

#include <cstdio>
using namespace std;

int n, m, nr[1000002];
long long sol;

inline int min (int a, int b) {return a < b ? a : b;}

int main ()
{
	freopen ("mins.in", "r", stdin);
	freopen ("mins.out", "w", stdout);

	scanf ("%d %d", &n, &m);
	n--;m--;

	int i;

	for (i = 2; i <= min (n, m); i ++)
		if (!nr[i])
		{
			for (long long j = (long long)i * i; j <= min (n, m); j += (long long)i * i)
				nr[j] -= 1000;
			for (int j = i; j <= min (n, m); j += i)
				nr[j] ++;
		}
	for (i = 1; i <= min (n, m); i ++)
		if (nr[i] > 0)
			if (nr[i] & 1)
				sol = sol - (long long)(n / i) * (m / i);
			else
				sol = sol + (long long)(n / i) * (m / i);
	printf ("%lld\n", sol + (long long) n * m);
	return 0;
}