Pagini recente » Cod sursa (job #1861668) | Cod sursa (job #2483943) | Cod sursa (job #1068832) | Cod sursa (job #2393371) | Cod sursa (job #2871840)
#include <stdio.h>
#include <stdint.h>
void read_uint64_t(FILE *__restrict stream, uint64_t *__restrict nr) {
uint8_t ch;
*nr = 0;
while ((ch = fgetc(stream)) && ('0' <= ch && ch <= '9')) {
*nr *= 10;
*nr += ch - '0';
}
if (ch == '\r') {
fgetc(stream);
}
}
uint64_t __inline__ min(uint64_t o1, uint64_t o2) {
return o1 < o2 ? o1 : o2;
}
uint64_t a[1000001];
uint8_t b[1000001];
uint64_t m;
void mkciur() {
int64_t i, j;
for (i = 2; i <= m; ++i) {
if (a[i] == 0) {
for (j = i; j <= m; j += i) {
++a[j];
}
for (j = i * i; j <= m; j += i * i) {
b[j] = 1;
}
}
}
}
uint64_t c, d;
int main(void) {
{
FILE *__restrict in = fopen("mins.in", "r");
read_uint64_t(in, &c);
read_uint64_t(in, &d);
--c;
--d;
fclose(in);
}
m = min(c, d);
mkciur();
{
FILE *__restrict out = fopen("mins.out", "w");
int64_t sum = c * d;
{
int64_t i;
for(i = 2; i <= m; ++i) {
if (b[i] == 0) {
sum += (1 - 2 * (a[i] & 1)) * (c / i) * (d / i);
}
}
}
fprintf(out, "%li\n", sum);
fclose(out);
}
return 0;
}