共三大题,两个小时完成。
一、循环节
问题描述: 求一个分数对应的十进制小数的循环节。我们定义一个小数的循环节是它的第一个最短的向右无限循环的数字串。
下面是一些分数的循环节,循环节部分用括号括住,例如:
分数
十进制小数
循环节
循环节长度(位数)
1 / 6
0.1(6)
6
1
5 / 7
0.(714285)
714285
6
1 / 250
0.004(0)
0
1
输入:输入两个正整数,第一个为分子,第二个为分母,两个正整数值均不超过3000。
输出:有两行输出,其中第一行输出一个分数和它的小数表示,其中小数由非循环节部分加上第一个出现的循环节或者不大于50位的小数,第二行输出整个循环节的长度,如小数超过50位仍未出现循环节则认为循环节长度为0。
输入样例:
1 6
5 7
1 250
输出样例
1 / 6=0.1(6)
1
5 / 7=0.(714285)
6
1 / 250=0.004(0)
1
二、车厢重组
在一个旧式的火车站旁边有一座桥,其桥面可以绕河中心的桥墩水平旋转。一个车站的职工发现桥的长度最多能容纳两节车厢,如果将桥旋转180度,则可以把相邻两节车厢的位置交换,用这种方法可以重新排列车厢的顺序。于是他就负责用这座桥将进站的车厢按车厢号从小到大排列。他退休后,火车站决定将这一工作自动化,其中一项重要的工作是编一个程序,从键盘输入初始的车厢顺序,计算最少用多少步就能将车厢排序,屏幕输出最少的步数。
输入样例:
4 3 2 1
输出样例:
6
三、围圈
N个人围成一圈面向圈内,按逆时针编号1到N,从第1个人开始,沿逆时针方向数到的第M个人离开圈,从他右边的人开始继续此过程,直到圈内只留下一个人。现在我们并不确切知道有多少,只知道人数N的下界NL和上界NU以及M的值。如果不想成为最后留在圈内的人,应该站在哪个位置才保险?计算“保险”的位置的最小值,如果该值不存在,输出“Better estimate needed”。
输入:NL、NU、M
输出“保险”的位置的最小值。
输入样例:
80 150 15
输出样例:
1
程序提交:sdxa@21cn.com或ljmbgy@sina.com或ljmbgy@hotmail.com