Problem:


Score : 400 points

Problem Statement

Give a pair of integers (A, B) such that A^5-B^5 = X.
It is guaranteed that there exists such a pair for the given integer X.

Constraints

1 \leq X \leq 10^9

X is an integer.

There exists a pair of integers (A, B) satisfying the condition in Problem Statement.

Input

Input is given from Standard Input in the following format:

X

Output

Print A and B, with space in between.
If there are multiple pairs of integers (A, B) satisfying the condition, you may print any of them.

A B

Sample Input 1

33

Sample Output 1

2 -1

For A=2 and B=-1, A^5-B^5 = 33.

Sample Input 2

1

Sample Output 2

0 -1



Sample input:
33


Sample output:
2 -1

Submission status: Runtime Error

Solution code:
import collections
import sys
def factorization(n):
    arr = []
    temp = n
    for i in range(2, int(-(-n**0.5//1))+1):
        if temp%i==0:
            cnt=0
            while temp%i==0:
                cnt+=1
                temp //= i
            arr.append([i, cnt])

    if temp!=1:
        arr.append([temp, 1])

    if arr==[]:
        arr.append([n, 1])

    return arr


X = int(input())
if X == 1:
    print("1 0")
elif X == 2:
    print("2 0")
else:
    for i in range(sys.maxsize):#i = B
        c = factorization(X+pow(i,5))
        flag = 0
        for j in range(len(c)):
            if c[j][1] % 5 != 0:
                flag = 1
                break
        if flag ==0:
            B = i
            A = 1
            for j in range(len(c)):
                A *= c[j][0]
            break
        c = factorization(X-pow(i,5))
        flag = 0
        for j in range(len(c)):
            if c[j][1] % 5 != 0:
                flag = 1
                break
        if flag ==0:
            B = i * -1
            A = 1
            for j in range(len(c)):
                A *= c[j][0]
            break
    print(A,B)

Submission status: Runtime Error

Solution code:
x = int(input())
b = 0
while True:
    a = pow(x + b**5, 0.2)
    if a**5 == int(a**5):
        break
    if b == 0:
        b = 1
    elif b>0:
        b = -b
    else:
        b = -b + 1
print(int(a), b)

Submission status: Runtime Error

Solution code:
x = int(input())
import math
print(x)
for i in range(1000000):
    a = x + (i ** 5)
    a2 = x - (i ** 5)
    #print("i", i, "a", a, "a2", a2)

    if a > 0:
        v = math.pow(a, 1.0/5.0)
        if v.is_integer():
            v=int(v)
            if (i ** 5 - (v ** 5) ) == x:
                print(i, v)
                break
            if (i ** 5 - (-v ** 5) ) == x:
                print(i, -v)
                break
            if (-i ** 5 - (v ** 5) ) == x:
                print(-i, v)
                break
            if (-i ** 5 - (-v ** 5) ) == x:
                print(-i, -v)
                break
            if (v ** 5 - (i ** 5)) == x:
                print(v, i)
                break
            if (v ** 5 - (-i ** 5)) == x:
                print(v, -i)
                break
            if (-v ** 5 - (i ** 5)) == x:
                print(-v, i)
                break
            if (-v ** 5 - (-i ** 5)) == x:
                print(-v, -i)
                break
    else:
        v = math.pow(-a, 1.0 / 5.0)
        if v.is_integer():
            v=int(v)
            if (i ** 5 - (v ** 5) ) == x:
                print(i, v)
                break
            if (i ** 5 - (-v ** 5) ) == x:
                print(i, -v)
                break
            if (-i ** 5 - (v ** 5) ) == x:
                print(-i, v)
                break
            if (-i ** 5 - (-v ** 5) ) == x:
                print(-i, -v)
                break
            if (v ** 5 - (i ** 5)) == x:
                print(v, i)
                break
            if (v ** 5 - (-i ** 5)) == x:
                print(v, -i)
                break
            if (-v ** 5 - (i ** 5)) == x:
                print(-v, i)
                break
            if (-v ** 5 - (-i ** 5)) == x:
                print(-v, -i)
                break


    if a2 > 0:
        v = math.pow(a2, 1.0/5.0)
        if v.is_integer():
            v=int(v)
            if (i ** 5 - (v ** 5) ) == x:
                print(i, v)
                break
            if (i ** 5 - (-v ** 5) ) == x:
                print(i, -v)
                break
            if (-i ** 5 - (v ** 5) ) == x:
                print(-i, v)
                break
            if (-i ** 5 - (-v ** 5) ) == x:
                print(-i, -v)
                break
            if (v ** 5 - (i ** 5)) == x:
                print(v, i)
                break
            if (v ** 5 - (-i ** 5)) == x:
                print(v, -i)
                break
            if (-v ** 5 - (i ** 5)) == x:
                print(-v, i)
                break
            if (-v ** 5 - (-i ** 5)) == x:
                print(-v, -i)
                break
    else:
        v = math.pow(-a, 1.0 / 5.0)
        if v.is_integer():
            v=int(v)
            if (i ** 5 - (v ** 5) ) == x:
                print(i, v)
                break
            if (i ** 5 - (-v ** 5) ) == x:
                print(i, -v)
                break
            if (-i ** 5 - (v ** 5) ) == x:
                print(-i, v)
                break
            if (-i ** 5 - (-v ** 5) ) == x:
                print(-i, -v)
                break
            if (v ** 5 - (i ** 5)) == x:
                print(v, i)
                break
            if (v ** 5 - (-i ** 5)) == x:
                print(v, -i)
                break
            if (-v ** 5 - (i ** 5)) == x:
                print(-v, i)
                break
            if (-v ** 5 - (-i ** 5)) == x:
                print(-v, -i)
                break

Submission status: Runtime Error

Solution code:
//ABC166 D

#include <bits/stdc++.h>
using namespace std;
typedef long long lint;
#define rep(i, n) for(int i = 0; i < (int)(n); i++)
#define reps(i, s, n) for(int i = s; i < (int)(n); i++)
const lint mod = 1000000007;


lint ans = 0;
lint x;
double a,b;
lint a5,b5;


int main() {
  cin >> x;

/*   rep(i,n){
    scanf("%lld",&h[i]);
  } */
  
  int flag = 1;
  reps(i,1,100){
    a = pow(i,5)-x;
    if(a > 0) flag = 1;
    else flag = -1;
    b = pow(abs(a),0.2);
    if(b - floor(b) < 0.0000001){
      a5 = i;
      b5 = (lint)(b*flag);
      printf("%lld %lld\n",a5,b5);
      break;
    }
  }
  
  //printf("%lld\n",ans);
}

Submission status: Runtime Error

Solution code:
x = int(input())
for i in range(2,x+1):
  if x%i==0:
    a = 0
    b = a-i
    break
while a**5 -b**5 != x:
  a+= 1
  b+= 1
print(a,b)

Submission status: Runtime Error

Solution code:
#!/usr/bin/env python3
import sys

def make_divisors(n):
    divisors = []
    for i in range(1, int(n**0.5)+1):
        if n % i == 0:
            divisors.append(i)
            if i != n // i:
                divisors.append(n//i)
    # divisors.sort()
    return divisors

def lef(a, b):
    return a*a*a*a + a*a*a*b + a*a*b*b + a*b*b*b + b*b*b*b

def solve(X: int):
    divs = make_divisors(X)
    for d in divs:
        base = 0
        upper = X // d
        while(lef(base+d,base) < upper):
            base+=1
        if lef(base+d,base) == upper:
            print(base+d,base)
            return

        base = -d//2-1
        while(lef(base+d,base) < upper) and (base > d//2-1):
            base -= 1
        if lef(base+d, base) == upper:
            print(base+d, base)
            return

        base = -d
        while(lef(base+d,base) < upper) and (base < -d//2+1):
            base += 1
        if lef(base+d, base) == upper:
            print(base+d, base)
            return

        base = -d
        while(lef(base+d,base) < upper):
            base -= 1
        if lef(base+d, base) == upper:
            print(base+d, base)
            return
    raise
    return


# Generated by 1.1.6 https://github.com/kyuridenamida/atcoder-tools  (tips: You use the default template now. You can remove this line by using your custom template)
def main():
    def iterate_tokens():
        for line in sys.stdin:
            for word in line.split():
                yield word
    tokens = iterate_tokens()
    X = int(next(tokens))  # type: int
    solve(X)

if __name__ == '__main__':
    main()

Submission status: Runtime Error

Solution code:
X = int(input())

B = [i for i in range(-60000,60001)]

ans = []

for b in B:
    a = (X+(b**5))**(1/5)
    if type(a) == float or type(a) == int:
        if a.is_integer():
            ans.append(a)
            ans.append(b)
            break;

for i in range(2):
    ans[i] = int(ans[i])
    ans[i] = str(ans[i])

print(' '.join(ans))