[POI2015] KWA
题目描述
考虑将正整数 $n$ 拆分成几个不同的平方数之和,比如 $30 = 1^2 + 2^2 + 5^2 = 1^2 + 2^2 + 3^2 + 4^2$,而 $8$ 不存在这样的拆分。
用 $k(n)$ 表示 $n$ 的拆分中,最大的底数最小可能是多少。如果 $n$ 不存在这样的拆分,则令 $k(n) = \infty$。例如:$k(1) = 1$,$k(8) = \infty$,$k(378) = 12$,$k(380) = 10$。
定义一个数 $x$ 被称为“超重”的,当且仅当存在 $y > x$,使得 $k(y) < k(x)$。从上面的例子可知,$378$ 是一个“超重”的数。
给定 $n$,你需要:
1. 求出 $k(n)$。
2. 求出 $1 \sim n$ 中有几个“超重”的数。
输入输出格式
输入格式
输入仅一行,包含一个正整数 $n$。
输出格式
输出一行包含两个整数,分别为对上述两个问题的答案。如果 $k(n) = \infty$,则输出一个减号 `-` 代替。
输入输出样例
输入样例 #1
30
输出样例 #1
4 15
说明
**【数据范围】**
对于 $100 \%$ 的数据,$1 \le n \le {10}^{18}$。
----
原题名称:Kwadraty。