Cod sursa(job #607507)

Utilizator GheorgheMihaiMihai Gheorghe GheorgheMihai Data 12 august 2011 13:48:37
Problema Mins Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <stdio.h>

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 = 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;
}