题目S:试毒

时间限制: 1000 ms 内存限制: 65536 kb
总通过人数: 0 总提交人数: 0
Special Judge

原比赛ID为:376。建议做题之前查看比赛简介,和比赛的前两条公告。以上包含的问题概不回答。

题目描述

现有n瓶水,其中有且仅有一瓶有毒。用小白鼠去试毒。小白鼠在喝到有毒的水后,会在1天内死亡。现在你只有一天的时间,需要通过死亡情况来判断有毒的水的编号。

可以认为每瓶水都是无限的,每一只小白鼠都可以喝任意多瓶水且不消耗时间。

你需要输出最少需要用多少只小白鼠才能完成这件事情。并且输出一个可以判断的试毒方案。注意,水的编号是从

输入

包括一行,一个整数n,表示一共有n瓶水。

输出

输出k+1行,第一行一个数k,表示你需要k只小白鼠。 以下第i+1行,代表第i只小白鼠要喝的水。开头一个数字m,表示第i只小白鼠要喝m瓶水,后面m个数字,说明这m瓶水的编号。

输入样例

3

输出样例

2
1 1
1 2

样例解释

对于样例,一共有三瓶水,需要两只小白鼠。令1号小白鼠喝1,2号小白鼠喝2,如果都没有死亡说明3号水有毒。 当然,如果你选择1号小白鼠喝1和2,2号小白鼠喝1,也是可以的。也就是输出

2
2 1 2
1 1 

这样的合理策略有很多。你只需要输出其中的一种。

数据范围

保证1≤n≤10000。

相关推荐