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
#include <bits/stdc++.h>
using namespace std;

vector<int> roz(int n) {
	vector<int> r;
	for (int i = 1; i * i <= n; i++) {
		if (n % i == 0) {
			r.push_back(i);
			r.push_back(n / i);
		}
	}
	int s = r.size();
	if (s > 1  &&  r[s - 1] == r[s - 2])
		r.pop_back();
	sort(r.begin(), r.end());
	return r;
}

int dwa(int n) {
	vector<int> div = roz(n);
	int res = 0;
	for (int i = 0; i < (int)div.size(); i++) {
		int t1 = div[i], t2 = n - div[i];
		if (t1 != 1  &&  t1 < t2  &&  t2 % t1 == 0)
			res++;
	}
	return res;
}

int main () {
	int n;
	cin >> n;
	
	vector<int> div = roz(n);
	int res = 0;
	for (int i = 0; i < (int)div.size(); i++) {
		int t = n - div[i];
		if (t % div[i] == 0)
			res += dwa(t / div[i]);
	}
	cout << res << endl;
	
	return 0;
}