#P3583. [POI2015] KWA

[POI2015] KWA

题目描述

考虑将正整数 nn 拆分成几个不同的平方数之和,比如 30=12+22+52=12+22+32+4230 = 1^2 + 2^2 + 5^2 = 1^2 + 2^2 + 3^2 + 4^2,而 88 不存在这样的拆分。

k(n)k(n) 表示 nn 的拆分中,最大的底数最小可能是多少。如果 nn 不存在这样的拆分,则令 k(n)=k(n) = \infty。例如:k(1)=1k(1) = 1k(8)=k(8) = \inftyk(378)=12k(378) = 12k(380)=10k(380) = 10

定义一个数 xx 被称为“超重”的,当且仅当存在 y>xy > x,使得 k(y)<k(x)k(y) < k(x)。从上面的例子可知,378378 是一个“超重”的数。

给定 nn,你需要:

  1. 求出 k(n)k(n)
  2. 求出 1n1 \sim n 中有几个“超重”的数。

输入格式

输入仅一行,包含一个正整数 nn

输出格式

输出一行包含两个整数,分别为对上述两个问题的答案。如果 k(n)=k(n) = \infty,则输出一个减号 - 代替。

30
4 15

提示

【数据范围】

对于 100%100 \% 的数据,1n10181 \le n \le {10}^{18}


原题名称:Kwadraty。