当前位置: 移动技术网 > IT编程>开发语言>Java > 【递推】B004_LQ_自描述序列(优化)

【递推】B004_LQ_自描述序列(优化)

2020年08月01日  | 移动技术网IT编程  | 我要评论
小明在研究一个序列,叫Golomb自描述序列,不妨将其记作{G(n)}。这个序列有2个很有趣的性质:对于任意正整数n,n在整个序列中恰好出现G(n)次。这个序列是不下降的。以下是{G(n)}的前几项:n12345678910111213G(n)1223344455566给定一个整数n,你能帮小明算出G(n)的值吗?输入一个整数n输出一个整数G(n)样例输入13样例输出6对于30%的数据,1 <= n <= 10000

https://blog.csdn.net/weixin_42318538/article/details/89316331
小明在研究一个序列,叫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

输出
一个整数G(n)

样例输入
13
样例输出
6

对于30%的数据,1 <= n <= 1000000
对于70%的数据,1 <= n <= 1000000000
对于100%的数据,1 <= n <= 2000000000000000

方法一:暴力
#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;
}

感觉还可以优化下…

复杂度分析

  • TimeO()O()
  • SpaceO()O()

方法二:

复杂度分析

  • TimeO()O()
  • SpaceO()O()

本文地址:https://blog.csdn.net/qq_43539599/article/details/108118753

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网