Cod sursa(job #3222682)

Utilizator Allie28Radu Alesia Allie28 Data 11 aprilie 2024 11:49:47
Problema Mins Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <fstream>
#include <iostream>
#include <climits>
#include <algorithm>
#include <vector>
#include <iomanip>
#include <cmath>

using namespace std;

ifstream fin("mins.in");
ofstream fout("mins.out");

const int LMAX = 1000005;

short ciur[LMAX];

int main() {
    int c, d, i, j;
    long long s1, s2, sol;
    fin>>c>>d;
    c--;
    d--;
    sol = min(c, d) - 1;
    for (i = 2; i <= min(c, d); i++) {
        s1 = s2 = 0;
        if (ciur[i] == 0) { //daca nr este prim
            for (j = i; j <= max(c, d); j = j+i) {
                ciur[j]++;
                if (j <= min(c, d)) s1++; //admite inversa
                else s2++;
            }
            sol = sol + s1*(s1 - 1) + s2*s1;
        }
        else if (ciur[i] == 2) { //scad, este produs de 2 nr prime
            for (j = i; j <= max(c, d); j= j + i) {
                ciur[j]--;
                if (j <= min(c, d)) s1++;
                else s2++;
            }
            sol = sol - s1*(s1 - 1) - s2*s1;
        }
    }
    fout<<c*d - sol;


    fin.close();
    fout.close();
    return 0;
}