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 Rust (1.42.0) (judge verdict: Accepted)

use std::io::*;
use std::str::FromStr;

fn main() {
	let x: i64 = read();
	let v: Vec<i64> = (-120_i64..120).map(|x| x.pow(5)).collect();
	for i in &v {
		match v.binary_search(&(i+x)) {
			Ok(n) => {
				println!("{} {}", ans(i+x), ans(*i));
				break;
			}
			Err(_) => continue,
		}
	}
}

fn ans(n: i64) -> i64 {
	if n < 0 {
		-(-n as f32).powf(0.2).round() as i64
	} else {
		(n as f32).powf(0.2).round() as i64
	}
}

fn read<T: FromStr>() -> T {
	let stdin = stdin();
	let stdin = stdin.lock();
	let token: String = stdin
		.bytes()
		.map(|c| c.expect("failed to read char") as char)
		.skip_while(|c| c.is_whitespace())
		.take_while(|c| !c.is_whitespace())
		.collect();
	token.parse().ok().expect("failed to parse token")
}