java编程题:题库选题——数学和算法好的来烧下脑
题库中有10w道题,每次从其中选取100道不同的题(ID)生成一份试卷,要求是每份试卷之间至少有一道题不重复。
问:
1. 理论上有多少份试卷?(详细计算);
2. 最优实现,写出代码,注意性能和效率。
注,不考虑题目类别、考察知识点什么的,将题目翻译成数字语言:从1~100000中随机生成100个数作为一个组合,每个组合之间至少有一个数是不相等的。理论上能生成多少个组合?生成这些组合的代码是什么?
我最初的想法是:
利用set不重复的特点保存100个Id,使用while循环获得随机数,前100次set.add()不进行set.size()的校验,以后每次校验,直到存够100个。但是判断每个set之间至少有一个不同,这个没想出来,写sql也好,java代码也好,请各路大神支招。能给出最优实现的小菜单独发帖给分!