京东 疯狂队列 5行AC
/*解题思路:
*经分析,该数组中的元素个数分布为等差数列
*第一个元素1为个数为1,第二个元素2的个数为2,....
*因此,通过使用等差数列就可以得到:n*a1 + n *(n-1)/2 = m;其中m可看作数组的下标,从1开始
*因为第一个元素个数为1,即a1 = 1;所以(n^2 + n)/2 = m
*即(n+1)*n = 2 * m;
*当对输入的位置开方,得到的小数进行四舍五入,即可得到所得结果
*/
#include <bits/stdc++.h>
using namespace std;
int main(){
double i;
while (cin >> i){
double j = sqrt(i * 2);
int n = round(j);
cout << n << endl;
}
return 0;
}


查看2道真题和解析