Cod sursa(job #3315909)

Utilizator tudorbconstantinBordei Tudor-Constantin tudorbconstantin Data 16 octombrie 2025 15:57:20
Problema Fractii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.24 kb
#include <iostream>
#include <vector>
#include <algorithm>
#include <cassert>
#include <fstream>

int main()
{
    std::ifstream f("fractii.in");
    assert(f.is_open());

    int n;
    f >> n;
    f.close();

    auto divisors = [&](const int x) -> std::vector<int> {
        std::vector<int> result{};
        for(int i = 2; i <= x; ++i) {
            if(x % i == 0) {
                result.push_back(i);
            }
        }
        return result;
    };

    auto divisors_in_common = [&](const int a, const int b) {
        auto divisors_a = divisors(a);
        auto divisors_b = divisors(b);

        std::vector<int> intersection;
        std::set_intersection(divisors_a.begin(), divisors_a.end(), divisors_b.begin(), divisors_b.end(), std::back_inserter(intersection));
        return intersection;
    };

    auto has_divisors_in_common = [&](const int a, const int b) {
        return !divisors_in_common(a, b).empty();
    };

    int nr = 0;
    for(int i = 1; i <= n; ++i) {
        for(int j = 1; j <= n; ++j) {
            if(!has_divisors_in_common(i, j)) {
                ++nr;
            }
        }
    }

    std::ofstream o("fractii.out");
    o << nr;
    o.close();

    return 0;
}