Pagini recente » Cod sursa (job #931191) | Cod sursa (job #308586) | Cod sursa (job #2864306) | Cod sursa (job #81896) | Cod sursa (job #3276807)
#include <fstream>
using namespace std;
const int NMAX = 1e6;
ifstream fin("mins.in");
ofstream fout("mins.out");
int c, d;
long long sol, a, b;
char v[NMAX]; /// v[i] = Mobius(i) + 1
int main()
{
fin >> c >> d;
--c, --d;
if(c > d) swap(c, d);
for(int i = 2; i <= c; ++i)
{
if(v[i] == 1) continue; /// i nu este divizibil cu patratul unui nr prim
a = 0, b = 0;
if(v[i])
{
for(int j = i; j <= d; j += i)
{
--v[j];
if(j <= c) ++a; /// Merg (i, j) si (j, i)
else ++b; /// Merge doar (i, j)
}
sol -= a * (a + b);
}
else
{
for(int j = i; j <= d; j += i)
{
++v[j];
if(j <= c) ++a; ///Merg (i, j) si (j, i)
else ++b; ///Merge doar (i, j)
}
sol += a * (a + b);
}
}
fout << (long long)c*d - sol;
return 0;
}