/* MIDI Olympiad in Informatics 2007 * Divisors reference solution * by Daumilas Ardickas */ #include #include #include #define pb push_back #define sz size() using namespace std; typedef vector vi; long long n; vi sk; const int p[20]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71}; void skaiciuoti(int l){ if (l==1){ int i, j; double fn=1; for (i=0; iin)) n=in; } } else { int d=1; while (d*d1&&(sk.sz==0||d<=sk[sk.sz-1])) { sk.pb(d); skaiciuoti(l/d); sk.pop_back(); } if (l/d>1&&(sk.sz==0||l/d<=sk[sk.sz-1])) { sk.pb(l/d); skaiciuoti(d); sk.pop_back(); } } ++d; } if (d*d==l&&d>1&&(sk.sz==0||d<=sk[sk.sz-1])){ sk.pb(d); skaiciuoti(d); sk.pop_back(); } } } int main(){ freopen("divisors.in", "r", stdin); freopen("divisors.out", "w", stdout); int d; scanf("%i", &d); n=-1; skaiciuoti(d); cout << n << endl; return 0; }