//Autor: Mateusz Wasylkiewicz
//Zawody: Potyczki Algorytmiczne 2018
//Strona: http://potyczki.mimuw.edu.pl/
//Zadanie: PIN, runda probna zwykla
//Czas: O(sqrt(n)*(log2(n))^(1+sqrt(log2(n))))
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
template <class T>
LL rozwiaz(T f, LL n)
{
LL wynik = 0, d = 1;
while (d * d < n)
{
if (n % d == 0)
{
wynik += f(n, d);
wynik += f(n, n / d);
}
d++;
}
if (d * d == n)
wynik += f(n, d);
return wynik;
}
inline LL rozwiaz2(LL n, LL d)
{
return d >= 2 && n / d >= 3 ? 1 : 0;
}
inline LL rozwiaz1(LL n, LL d)
{
return rozwiaz(rozwiaz2, n / d - 1);
}
void zrob_test()
{
LL n;
cin >> n;
cout << rozwiaz(rozwiaz1, n) << '\n';
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
zrob_test();
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 50 51 52 | //Autor: Mateusz Wasylkiewicz //Zawody: Potyczki Algorytmiczne 2018 //Strona: http://potyczki.mimuw.edu.pl/ //Zadanie: PIN, runda probna zwykla //Czas: O(sqrt(n)*(log2(n))^(1+sqrt(log2(n)))) #include <bits/stdc++.h> using namespace std; typedef long long LL; template <class T> LL rozwiaz(T f, LL n) { LL wynik = 0, d = 1; while (d * d < n) { if (n % d == 0) { wynik += f(n, d); wynik += f(n, n / d); } d++; } if (d * d == n) wynik += f(n, d); return wynik; } inline LL rozwiaz2(LL n, LL d) { return d >= 2 && n / d >= 3 ? 1 : 0; } inline LL rozwiaz1(LL n, LL d) { return rozwiaz(rozwiaz2, n / d - 1); } void zrob_test() { LL n; cin >> n; cout << rozwiaz(rozwiaz1, n) << '\n'; } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); zrob_test(); return 0; } |
English