京东 疯狂队列 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; }