该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
题目描述
Bob是个编程小天才,班级里流行了一种跳跃棋的游戏,跳跃棋规则是这样的,从起点(位置是0)开始,在数轴上,往指定的位置 x 处跳跃。
跳跃规则是这样的,如果你的棋在位置y(y可以是负数),你将进行第k次跳跃,你可以跳到 y+k 位置或者跳到 y−1。比赛看谁的棋最先(也就是跳跃次数最少)到达x。
Bob非常聪明,在知道目标位置x后,很快就利用程序计算出了最少跳跃次数,他想考考你。
输入格式
第一行一个整数t(1≤t≤1000),表示测试的组数。
接下来t行,每行一个整数,表示目标位置 x 。
输出格式
对于每组测试数据,输出一个整数,占一行,表示跳到x位置最少的跳跃次数。
如果无法跳到输出−1。
5
1
2
3
4
5
1
3
2
3
4
样例说明
对于第一组,目标位置x=1,你只需要跳1步,就可以从位置0跳到位置1;
对于第二组,目标位置x=2,你最少需要3次:第1次从0跳到1(0+1=1),第2次从1跳到3(1+2=3),第3次从3跳到2(3−1=2);
对于第三组,目标位置x=3,你最少需要2次:第1次从0跳到1(0+1=1),第2次从1跳到3(1+2=3);
对于第四组,目标位置x=4,你最少需要3次:第14次从0跳到−1(0−1=−1),第2次从−1跳到1(−1+2=1),第3次从1跳到4(1+3=4);
对于第五组,目标位置x=5,你最少需要4次:第1次从0跳到1(0+1=1),第2次从1跳到3(1+2),第3次从3跳到6(3+3),第4次从6跳到5(6−1=5)。
数据规模与约定
30%的数据t≤10,0<x≤103
50%的数据t≤100,0<x≤104
80% 的数据t≤1000,0<x≤106
100% 的数据t≤1000,0<x≤1018