[C/C++]数字序列第n位的值 - 2019校招编程刷题
参考链接
题目描述
有一个无限长的数字序列1,2,2,3,3,3,4,4,4,4,5,5,5,5,5。。。(数字序列从1开始递增,且数字k在该序列中正好出现k次),求第n项是多少
输入描述
输入为一个整数n
输出描述
输出一个整数,即第n项的值
输入例子1:
4
输出例子1:
3
备注:
如:输入为3,有序数列第3项的值为2,则输出为2
思路:
- 从数列下手,数列的数值每增加i,数列的长度也增加i,因此:数列 1,2,2,3,3,3添加数字4,数列就变为1,2,2,3,3,3,4,4,4,4。如果下一个数字是 i ,那么数列的长度就是 长度 = 长度 + i 。
- 只要 n 是小于等于长度的就可。
Just show my code
代码(c++/c)
#include<iostream>
using namespace std;
int main(){
int n ;
cin >> n;
int i = 1;
int num = 0;
while(num < n){
num+= i;
i++;
}
cout<<i-1<<endl;
return 0;
}
如果我的文章能帮你节约20秒,就请你为我的文章点个赞吧!