#D1013. 拆分

拆分

题目描述

33DAI 有一个正整数 nn。他想把 nn 写成若干个互不相同的正整数之和,并且希望加数的个数尽量多。

请你告诉他:最多能把 nn 写成多少个数之和?

输入格式

第一行一个整数 TT,表示测试用例组数。

接下来 TT 行,每行一个整数 nn。

输出格式

对每组测试用例输出一行一个整数,表示最多能拆成的加数个数。

4
1
2
5
6
1
1
2
3

样例 1 解释

  • n=1n = 1:只能写成 11,共 11 个数;
  • n=2n = 2:只能写成 22(1+11+1 不合法,因为两个加数必须不同),共 11 个数;
  • n=5n = 5:可以写成 1+41 + 4,共 22 个数;
  • n=6n = 6:可以写成 1+2+31 + 2 + 3,共 33 个数。
3
9
10
1000000000
3
4
44720

样例 2 解释

  • 9=1+2+69 = 1 + 2 + 6,共 33 个数;
  • 10=1+2+3+410 = 1 + 2 + 3 + 4,共 44 个数;
  • 109=1+2+⋯+44719+8316010^9 = 1 + 2 + \cdots + 44719 + 83160,一共 4472044720 个数。

样例 3

见 split3.in 与 split3.ans。

样例 4

见 split4.in 与 split4.ans。

数据范围

对于全部测试数据,保证:

  • 1≤T≤1041 \le T \le 10^4;
  • 1≤n≤1091 \le n \le 10^9。

子任务

本题共 20 个测试点,按测试点计分:

测试点 分值 每个测试点 特殊限制
1∼61 \sim 6 3030 55 n≤100n \le 100
7∼127 \sim 12 n≤106n \le 10^6
13∼2013 \sim 20 4040 无额外限制

每个测试点单独评分,全部测试点的得分之和即为本题得分。