早教吧 育儿知识 作业答案 考试题库 百科 知识分享

c++小球钟做对了追加分数!时间是运动的一种方式.我们常常用运动来度量时间.例如,小球钟是一个通过不断在轨道上移动小球来度量时间的简单设备.每分钟,一个转动臂将一个小球从小球队列

题目详情
c++小球钟做对了追加分数!
时间是运动的一种方式.我们常常用运动来度量时间.例如,小球钟是一个通过不断在轨道上移动小球来度量时间的简单设备.每分钟,一个转动臂将一个小球从小球队列的底部挤走,并将它上升到钟的顶部并将它安置在一个表示分钟,15分钟和小时的轨道上.这里可以显示从1:00到24:59(这正是奇怪之处)范围内的时间,若有3个球在分钟轨道,1个球在5分钟轨道,2个球在15分钟轨道及15个球在小时轨道上,就显示时间15:38.
当小球通过钟的机械装置被移动后,它们就会改变其初始次序.仔细研究它们次序的改变,可以发现相同的次序会不断出现.由于小球的初始次序最后迟早会被重复,所以这段时间的长短是可以被度量的,这完全取决于所提供的小球的总数.
小球钟的运作
每分钟,最近最少被使用的那个小球从位于球钟底部的小球队列被移走,并将上升并安置于显示分钟的轨道上,这里可以放置4个小球.当第5个小球滚入该轨道,它们的重量使得轨道倾斜,原先在轨道上的4个小球按照与它们原先滚入轨道的次序相反的次序加入到钟底部的小球队列.引起倾斜的第5个小球滚入显示5分钟的轨道.该轨道可以放置2个球.当第3个小球滚入该轨道,它们的重量使得轨道倾斜,原先2个小球同样以相反的次序加入钟底部的小球队列.而这第3个小球滚入了显示15分钟的轨道.这里可以放置3个小球.当第4个小球滚入该轨道,它们的重量使得轨道倾斜,原先在轨道上的3个小球按照与它们原先滚入轨道的次序相反的次序加入到钟底部的小球队列,而这第4个小球滚入了显示小时的轨道.该轨道同样可以放置23个球,但这里有一个外加的固定的不能被移动的小球,这样小时的值域就变为1到24.从5分钟轨道滚入的第24个小球将使小时轨道倾斜,这23个球同样以相反的次序加入钟底部的小球队列,然后那第24个小球同样加入钟底部的小球队列.
输入定义了一序列的小球时钟.每个时钟都按照前面描述的那样运作.所有时钟的区别仅在于它们在1:00时钟启动时刻小球初始个数的不同.在输入的每行上给出一个时钟的小球数,它并不包括那个在小时轨道上的固定的小球.合法的数据应在33到250之间.0表明输入的结束.
输出中每一行只有一个数,表示对应的输入情形中给出的小球数量的时钟在经过多少天的运行可以回到它的初始小球序列.
Sample Input
33
55
0
Sample Output
22
50
Source
shuguang
▼优质解答
答案和解析
参考:函数声明:friend ostream& operator<<(ostream& osObj, const clock& aClock);函数定义:ostream& operator<<(ostream& osObj, const clock& aClock){//函数内使用以下方式输出内容(举例)o...