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
#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

int ilosc_dzielnikow( int x )
{
    int ilosc = 0;
    for( int i = 1; i*i <= x; i ++ )
    {
        if( x%i == 0 )
        {
            ilosc += 2;
        }
        if( x%i == 0 && i*i == x  ) ilosc --;
    }
    return ilosc;
}

int main()
{
    int n;
    cin >> n;
    int wynik = 0;
    for( int a = 1; a*a <= n; a ++ )
    {
        if( n%a == 0 )
        {
            int d1 = a;
            int d2 = n/a;
            if( d1 != 1 )
            {
                wynik += (ilosc_dzielnikow(d1-1)-2);
                if((d1-1)%2 == 0 && d1 > 3) wynik --;
            }
            if( d2 != 1 && d2 != d1 )
            {
                wynik += (ilosc_dzielnikow(d2-1)-2);
                if((d2-1)%2 == 0 && d2 > 3) wynik --;
            }
        }
    }
    //cout << "\n";
    cout << wynik;
    return 0;
}