Pagini recente » Borderou de evaluare (job #3159460) | Cod sursa (job #3330744) | Cod sursa (job #3328503) | Cod sursa (job #3333113) | Cod sursa (job #3315909)
#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;
}