Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- using namespace std;
- unsigned long long binpow (unsigned long long a, unsigned long long n) {
- if (n <= 0)
- return 1;
- if (n % 2 == 1)
- return binpow (a, n-1) * a;
- else {
- unsigned long long b = binpow (a, n/2);
- return b * b;
- }
- }
- int check(unsigned long long m, unsigned long long k)
- {
- if( k == 1) return 1;
- int flag;
- unsigned long long t,x,tr;
- for( t = 1;t<m/2;t++)
- {
- for(x =2;x<m/2;x++)
- {
- tr = t*(x)*binpow(x+1,k-2);
- if(tr > m)
- {
- if(x == 2)
- {
- flag == 0;
- }
- break;
- }
- if(tr == m)
- {
- return 1;
- }
- if(flag == 1)
- {
- return 0;
- }
- }
- }
- return 0;
- }
- int main()
- {
- unsigned long long m;
- cin >> m;
- int flag;
- unsigned long long left = 0;
- unsigned long long right = m;
- unsigned long long mid;
- while(left+1<right)
- {
- mid = (left + right)/2;
- if(check(m,mid) == 1)
- {
- left = mid;
- flag = 1;
- }
- else{
- right = mid;
- flag = 0;
- }
- }
- if(flag == 1)
- {
- cout << mid;
- }
- else{
- cout << mid -1;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement