![](https://i-blog.csdnimg.cn/blog_migrate/534affe490adf9249b8f39235d386f96.png)
![](https://i-blog.csdnimg.cn/blog_migrate/bf509feadc384ee5ba411f6746ff6ba5.png)
输入
5
1
2
3
4
5
输出
1
3
2
3
4
对于两种操作,作用效果的差值为k+1,如果我们选的数和要到达的数相差x,那么只要让第x-1个位置取-1的操作就可以了,特判当前选的结果距离我们要的答案的差值刚好大1的情况,我们无法操作第0号位置让它取-1,那么只能单独增加一步取-1的操作
#include <iostream>
#include <bits/stdc++.h>
#include <cstring>
#include <vector>
#include <queue>
#include <algorithm>
#define x first
#define y second
#define fu(i,a,b) for(int i=a;i<=b;i ++ )
#define fd(i,a,b) for(int i=a;i>=b;i -- )
#define endl '\n'
#define ms(x,y) memset(x,y,sizeof x)
#define ios ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
using namespace std;
typedef long long LL;
typedef pair<int,int> PII;
typedef pair<double,double> PDD;
typedef pair<double,int> PDI;
typedef pair<char,int> PCI;
typedef pair<string,int> PSI;
typedef pair<int,string> PIS;
typedef pair<LL,LL> PLL;
//typedef __int128 i128;
typedef unsigned long long ULL;
const int N = 4e4+ 10,M = 1e5 + 10,INF = 0x3f3f3f3f ;
const int mod = 1e9;
const double eps = 1e-8;
int n,m,p[N];
inline void solve()
{
int n;cin >> n;
int step = 0;
while(step * (step + 1 ) < 2 *n ) step ++ ;
if(step * (step + 1 ) /2 == n+ 1 ) step ++;
cout << step <<endl;
}
signed main()
{
// freopen("1.txt","w",stdout);
ios
int t=1;
cin>>t;
int now = 1;
while(t -- )
{
// cout<<"Case ";
// cout<<"Scenario #";
// cout<< now ++ <<": ";
// cout<< now ++ <<": \n";
solve();
}
return 0;
}
1455B - Jumps