/ SB域 / 题库 /

SolitaireSimulation 游戏

SolitaireSimulation 游戏

【题目描述】让我们来玩这个游戏:我们有一些卡片,分成若干堆。heap[i]表示第i堆的卡片数量。游戏的每一步,你从每一堆中取出一张卡片组成新的一堆。
如果我们不记顺序只记每堆卡片的数量,显然,最终这个游戏会进入一个循环。
给定你初始的卡片信息,请你求出一个最小的循环长度。换句话说,当进行了一段游戏之后,若令f(i)表示第i歩后的卡片状态,总有f(i+T)=f(i)。找出最小的正数T。
【输入文件】第一行一个整数n,表示初始堆数
第二行n个正整数,表示每一堆的数量。
【输出文件】一个整数,表示最小正周期。
【输入样例】

2
1  4

【输出样例】

3

【样例说明】

1.  2,3
2.  1,2,2
3.  1,1,3
4.  2,3
5.  1,2,2
6.  …

最小正周期是3。注意,本例中初始状态不会再度出现。
【数据规模和约定】
1<=n<=50
1<=heap[i]<=50
所有heap[i]之和不超过50。