求根公式
假设第n位数字为,有:
可以求出:
答案为,时间复杂度。
#include<bits/stdc++.h>
using namespace std;
int n;
int main(){
cin>>n;
cout<<ceil((sqrt(8.*n+1)-1) / 2.)<<endl;
return 0;
}
1+2+3+...+K=((1+K)∗K)/2
假设第n位数字为x,有:
((1+x)∗x)/2>=n
可以求出: x=ceil((sqrt(1+8∗n)−1)/2)
答案为x,时间复杂度O(1)。
#include<bits/stdc++.h>
using namespace std;
int n;
int main(){
cin>>n;
cout<<ceil((sqrt(8.*n+1)-1) / 2.)<<endl;
return 0;
}