Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- // обойти 1 раз, подсчитав при том кол-во не 1-иц. Далее просто чекать это число
- int main()
- {
- int n = 0;
- while (std::cin >> n)
- {
- std::vector<std::pair<int, std::vector<bool>>> matrix(n, {0, std::vector<bool>(n, false)});
- matrix.shrink_to_fit();
- for (int i = 0; i < n; i++)
- {
- int x = 0;
- std::scanf("%d", &x), x--;
- matrix[i].second[x] = true, matrix[i].first++;
- matrix[x].second[i] = true, matrix[x].first++;
- }
- int max = 0;
- for (int m = 0; m < n; m++)
- {
- if (matrix[m].first == 1)
- continue;
- for (int r = 0; r < n; r++)
- if (matrix[m].second[r] == true && matrix[r].first > 1)
- max++;
- }
- printf("TEST %d\n", max);
- max /= 2;
- std::vector<int> dels;
- for (int d = 2; d * d <= n; d++)
- {
- if (n % d == 0)
- {
- dels.push_back(d);
- if (d * d != n) dels.push_back(n / d);
- }
- }
- printf("size %llu\n", dels.size());
- int an = 2;
- for (int del : dels)
- {
- printf("del %d\n", del);
- if (n / del <= max)
- an++;
- }
- std::printf("%d\n", an);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement