#include<iostream>
#include<cmath>
#include<set>
#include<utility>
using namespace std;
int possiblePins = 0;
set<pair<int,int> > middle;
void dividers(int num, int n) {
for (int i = 2; i<=sqrt(num); i++) {
if (num%i == 0) {
int a = n/num;
if (i >= 3) {
if (middle.find(make_pair(a*num/i, a)) == middle.end()) {
middle.insert(make_pair(a*num/i, a));
possiblePins++;
}
}
if (middle.find(make_pair(a*i, a)) == middle.end()) {
middle.insert(make_pair(a*i, a));
possiblePins++;
}
}
}
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
int n;
cin >> n;
for (int i = 1; i<=sqrt(n); i++) {
if (n%i == 0) {
if (i >= 6) {
dividers(i-1, n);
}
dividers(n/i-1, n);
}
}
cout << possiblePins << "\n";
return 0;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | #include<iostream> #include<cmath> #include<set> #include<utility> using namespace std; int possiblePins = 0; set<pair<int,int> > middle; void dividers(int num, int n) { for (int i = 2; i<=sqrt(num); i++) { if (num%i == 0) { int a = n/num; if (i >= 3) { if (middle.find(make_pair(a*num/i, a)) == middle.end()) { middle.insert(make_pair(a*num/i, a)); possiblePins++; } } if (middle.find(make_pair(a*i, a)) == middle.end()) { middle.insert(make_pair(a*i, a)); possiblePins++; } } } } int main() { ios_base::sync_with_stdio(0); cin.tie(0); int n; cin >> n; for (int i = 1; i<=sqrt(n); i++) { if (n%i == 0) { if (i >= 6) { dividers(i-1, n); } dividers(n/i-1, n); } } cout << possiblePins << "\n"; return 0; } |
English