Finite Encyclopedia of Integer Sequences

Posted lemon-jade

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Finite Encyclopedia of Integer Sequences相关的知识,希望对你有一定的参考价值。

Time limit : 2sec / Memory limit : 256MB

Score : 800 points

Problem Statement

In Finite Encyclopedia of Integer Sequences (FEIS), all integer sequences of lengths between 1 and N (inclusive) consisting of integers between 1 and K (inclusive) are listed.

Let the total number of sequences listed in FEIS be X. Among those sequences, find the (X⁄2)-th (rounded up to the nearest integer) lexicographically smallest one.

Constraints

  • 1≤N,K≤3×105
  • N and K are integers.

Input

Input is given from Standard Input in the following format:

K N

Output

Print the (X⁄2)-th (rounded up to the nearest integer) lexicographically smallest sequence listed in FEIS, with spaces in between, where X is the total number of sequences listed in FEIS.


Sample Input 1

Copy
3 2

Sample Output 1

Copy
2 1 

There are 12 sequences listed in FEIS: (1),(1,1),(1,2),(1,3),(2),(2,1),(2,2),(2,3),(3),(3,1),(3,2),(3,3). The (12⁄2=6)-th lexicographically smallest one among them is (2,1).


Sample Input 2

Copy
2 4

Sample Output 2

Copy
1 2 2 2

Sample Input 3

Copy
5 14

Sample Output 3

Copy
3 3 3 3 3 3 3 3 3 3 3 3 2 2 

 

题解:偶数的时候很好弄,输出k/2,k...k,奇数的时候,对与k/2.k/2 ...k/2 这个序列 里中间最近,与中间相差n/2 (证明 or 官方题解)个,即往前模拟

code:

#include <bits/stdc++.h>

using namespace std;
typedef long long ll;
const int N = 3e5 + 10;
const int mod = 1e9 + 7;
int a[N];
int main()
{
    int n,k;
    scanf("%d%d",&k,&n);
    if(k&1)
    {
        for(int i = 1;i <= n;i++)
            a[i] = (k+1)/2;
        int m = n;
        for(int i = 1;i <= n/2;i++)
        {
            if(a[m] == 1)
                m--;
            else
            {
                a[m]--;
                for(int j = m + 1;j <= n;j++)
                    a[j] = k;
                m = n;
            }
        }
        for(int i = 1;i <= m;i++)
            printf("%d%c",a[i],i == m?
: );
    }
    else
    {
        for(int i = 1;i <= n;i++)
            printf("%d%c",i == 1?k/2:k,i == n?
: );
    }
    return 0;
}

 

以上是关于Finite Encyclopedia of Integer Sequences的主要内容,如果未能解决你的问题,请参考以下文章

[思维]Finite Encyclopedia of Integer Sequences

AtCoderCODE FESTIVAL 2016 qual C E-順列辞書 / Encyclopedia of Permutations

CF983A Finite or not?(数学)

重磅 | Bplus全新品牌“Blockchain Encyclopedia”下周正式上线!

ISBN|方正|超星|The national academies press|OECD|RSC|Springer Link|Knovel|Encyclopedia Britannica

快速数学导致对“__pow_finite”的未定义引用