2024码蹄杯高职组初赛第二场 L题奇怪的数列 题型:枚举

79 阅读1分钟

码题集OJ-奇怪的数列 (matiji.net)

刚开始我是枚举着做的,超时了.

#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;
}

image.png