Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdio>
- #include <cstdlib>
- #include <ctime>
- #include <set>
- #include <map>
- #include <vector>
- #include <algorithm>
- #include <cmath>
- #include <cstring>
- #include <windows.h>
- using namespace std;
- #define ll long long
- #define lld long double
- ll n, res;
- ll fp(ll a, ll b)
- {
- ll res = 1;
- while (b)
- if (b & 1)
- {
- if ((n + a - 1) / a > res)
- res *= a;
- else
- res = n;
- --b;
- }
- else
- {
- if ((n + a - 1) / a > a)
- a *= a;
- else
- a = n;
- b >>= 1;
- }
- return res;
- }
- int main()
- {
- //freopen("in.txt", "r", stdin);
- ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
- //cout << fp(10, 1);
- cin >> n;
- for (ll a = 0; a <= 60; a++)
- for (ll b = 0; b <= 60; b++)
- for (ll c = 0; c <= 60; c++)
- {
- ll l = 0, r = n;
- while (l < r - 1)
- {
- ll m = (l + r) / 2;
- ll q = fp(m, a) + fp(m, b) + fp(m, c);
- if (q > n) r = m;
- else l = m;
- }
- if (fp(l, a) + fp(l, b) + fp(l, c) == n) res++;
- }
- cout << res;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement