测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A40816. 自描述序列

填空题 困难

题目描述

自描述序列

题目描述

小明在研究一个序列,叫Golomb自描述序列,不妨将其记作{G(n)}。这个序列有2个很有趣的性质:

对于任意正整数n,n在整个序列中恰好出现G(n)次。

这个序列是不下降的。

以下是{G(n)}的前几项:

n 1 2 3 4 5 6 7 8 9 10 11 12 13

G(n) 1 2 2 3 3 4 4 4 5 5 5 6 6

给定一个整数n,你能帮小明算出G(n)的值吗?

输入

一个整数n。

对于30%的数据,1 <= n <= 1000000

对于70%的数据,1 <= n <= 1000000000

对于100%的数据,1 <= n <= 2000000000000000

输出

一个整数G(n)

样例输入

13

样例输出

6

资源约定:

峰值内存消耗(含虚拟机) < 256M

CPU消耗 < 1000ms

参考答案

#include<bits/stdc++.h> using namespace std; // n 1 2 3 4 5 6 7 8 9 10 11 12 13 // G(n) 1 2 2 3 3 4 4 4 5 5 5 6 6 const int N=1e6+5; typedef long long ll; int main() { std::ios::sync_with_stdio(false); cin.tie(0);cout.tie(0); int n; ll g[N]; cin>>n; g[1]=1, g[2]=2; for (ll i=2, j=2; i<N; i++) for (int c=0; c<g[i]&&j<N; c++) { g[j++]=i; } cout << g[n]; return 0; }
上一题 下一题