刚开始我是枚举着做的,超时了.
#include<bits/stdc++.h>
#define int long long
using namespace std;
int flag;
const int N = 100;
int p[N];
int k = 0;
signed main()
{
cin.tie(nullptr)->sync_with_stdio(0);
int n; cin >> n;
for (int i = 1; i <= N; i++)
{
int t = i;
while (t--)
{
p[k] = i;
k++;
}
}
cout << p[n];
return 0;
}
正解
只要满足n个n的形式,k就+1:
int k=1;
1个1,k++,k=2;
此时数列: 1,2
2个2,k++,k=3
此时数列:1,2,2,3
......
#include<bits/stdc++.h>
using namespace std;
const int N=1010;
int ans[N];
int main()
{
int n;cin>>n;
int K=1;
int cnt=0;
for(int i=1;i<=n;i++)
{
if(cnt==K)
{
K++;
cnt=0;
}
ans[i]=K;
cnt++;
}
cout<<ans[n]<<endl;
return 0;
}