列表

详情


NC205297. 最大字符集

描述

Cubercsl 很喜欢 01 字符串,就像“她喜欢大海”,这一天他想送她一个由 01 字符串组成的集合。
他自然是希望这个集合越多样化越大越好。所以他希望这个集合满足以下条件。
  • 每个字符串由 0 和 1 组成。
  • 每个字符串长度在 1 到 n 之间,且两两长度不同。
  • 集合中任何一个字符串都不是其他字符串的子串。
请你帮他找到满足他要求的最大的集合。
字符串 a 是 b 的子串当且仅当从 b 的头部和尾部删除一些字符(可以是零个或者所有)能得到的 a。

输入描述

仅一行,包含一个整数 n()。

输出描述

第一行输出这个集合的大小 k。
接下来 k 行每行输出一个 01 字符串,表示这个集合的一个元素。
答案不唯一,任何符合要求的答案都会被判为正确。

示例1

输入:

1

输出:

1
1

示例2

输入:

5

输出:

4
00
110
1010
11111

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

pypy3 解法, 执行用时: 77ms, 内存消耗: 21272K, 提交时间: 2023-03-20 20:32:58

import sys

n = int(sys.stdin.readline())

if n==1:
    print('1\n1')
elif n==2:
    print('2\n1\n00')
else:
    print(n-1)
    print('00')
    for i in range(1,n-1):
        print('0%s0'% ('1'*i))

Ruby(2.4.2) 解法, 执行用时: 70ms, 内存消耗: 7392K, 提交时间: 2020-04-18 14:36:26

N = gets.to_i
ans = []
if N <= 2
	ans << '1'
	ans << '00' if N == 2
else
	str = '00'
	while str.size <= N
		ans << String.new(str)
		str.insert 1, '1'
	end
end
puts ans.size
puts ans

Python3(3.5.2) 解法, 执行用时: 41ms, 内存消耗: 3548K, 提交时间: 2020-04-18 13:57:31

n = int(input())
if n == 1:
    print("1\n1")
elif n == 2:
    print("2\n1\n00")
else:
    print(n-1)
    for i in range(n-1):
        print("0"+"1"*i+"0")

上一题