题目描述:
/**
东东从京京那里了解到有一个无限长的数字序列: 1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5, ...
(数字k在该序列中正好出现k次)。东东想知道这个数字序列的第n项是多少,你能帮帮他么
输入描述:
输入包括一个整数n(1 ≤ n ≤ 10^18)
输出描述:
输出一个整数,即数字序列的第n项
输入例子1:
169
输出例子1:
18
*/
思路如下:
找出最小的n, 使得n*(n+1)/2>=target
注意写法放置爆long long 这里求n有两种方法:1.二分查找 2.直接调用开方函数
代码如下:
#include<stdio.h>
#include<iostream>
#include<cmath>
using namespace std;
int main(){
long long N;
scanf("%lld", &N);
long long sqrtN=sqrt(2*N);
if(sqrtN*(sqrtN+1)<2*N)
sqrtN++;
printf("%lld\n", sqrtN);
return 0;
}