#include <cstdio> #include <cmath> #include <iostream> #define ll long long using namespace std; ll comb(ll x) { ll s = round(sqrt(x)); ll res = 0; for(ll i=2;i<=s;i++) { if((x%i) == 0) { ll j = x-i; if(i < j) { res++; } ll k = x/i; if(k != i) { ll j = x-k; if(k < j) { res++; } } } } return res; } ll solve(ll n) { ll s = round(sqrt(n)); ll res = 0; for(ll i=1;i<=s;i++) { if((n%i) == 0) { ll d = n/i; res += comb(d-1); if((d != i) && (i > 1)) { res += comb(i-1); } } } return res; } int main(int argc, char** argv) { ll n; scanf("%lld", &n); printf("%lld\n", solve(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 50 | #include <cstdio> #include <cmath> #include <iostream> #define ll long long using namespace std; ll comb(ll x) { ll s = round(sqrt(x)); ll res = 0; for(ll i=2;i<=s;i++) { if((x%i) == 0) { ll j = x-i; if(i < j) { res++; } ll k = x/i; if(k != i) { ll j = x-k; if(k < j) { res++; } } } } return res; } ll solve(ll n) { ll s = round(sqrt(n)); ll res = 0; for(ll i=1;i<=s;i++) { if((n%i) == 0) { ll d = n/i; res += comb(d-1); if((d != i) && (i > 1)) { res += comb(i-1); } } } return res; } int main(int argc, char** argv) { ll n; scanf("%lld", &n); printf("%lld\n", solve(n)); return 0; } |