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

Solution in Scala (2.13.1) (judge verdict: Accepted)

import java.util.Scanner

object Main {
  def main(args: Array[String]): Unit = {
    //nextLineとnextを同時に使ったら死ぬ
    val sc = new Scanner(System.in)

    val x = sc.nextLong()

    var count = 1L

    var nums = Vector(0L)
    var map = Map[Long, Long]()
    map = map + (0L -> 0L)

    while (math.pow(count, 5) <= x * x) {
      val n = math.pow(count, 5).toLong
      nums = nums :+ n
      nums = nums :+ (-n)
      map = map + (n -> count) + (-n -> -count)
//      debug(count, n)
      count += 1
    }

    val index = (count - 1) * 2 + 1
    debug(nums.length, index)

    for {
      i <- 0 until index.toInt
      j <- 0 until index.toInt
    } {
      if (nums(i) - nums(j) == x) {
        println(s"${map(nums(i))} ${map(nums(j))}")
        sys.exit(0)
      }
    }
  }

  def debug(args: Any*): Unit = {
    Console.err.println(args.mkString(" "))
  }

  def printExecTime(process: => Unit): Unit = {
    val start = System.currentTimeMillis
    process
    debug("処理時間： " + (System.currentTimeMillis - start) + " ミリ秒")
  }

}