2705:跳绳游戏
总时间限制:
1000ms
内存限制:
65536kB
描述
小朋友玩跳绳比赛,要计算在一分钟内跳了多少下.假设每秒钟跳一下,如果中途失败了,则要花三秒钟后才能开始重跳.一般小朋友跳绳一分钟要跳坏好几次.现在给出小朋友每次跳坏时已经跳的总数,求小朋友在一分钟内跳了多少下.(请注意分析示例数据.)
输入
第一行为n个小朋友
其余各行,每行第一个整数是跳坏的次数m,其余m个整数是跳坏时累计跳了多少下.
输出
输出相应小朋友头一分钟内跳了多少下.
样例输入
6
0
3 12 23 45
1 17
4 10 20 30 40
5 10 20 30 40 58
6 10 20 30 40 47 60
样例输出
60
51
57
48
48
47
提示
提示,在跳绳比赛时,你可能已经超时了,但自己还在计数,但裁判已经停止计时并得到成绩了.这里相当与自己计数.因此,并非跳坏的时候都是在前一分钟以内.请注意分析示例数据
解题思路:
1、 每次跳坏时跳的次数,加上跳坏的总时间就是总共需要的时间,如果不超过60秒,则跳的总数是(60-调坏的总时间)
2、 如果超过60秒则需要分两种情况。
3、 一种是:调坏后,还有不到三秒的时间已经不够下一次跳,一种是:还可以继续跳绳。
4、 所以输出结果有不同。
程序代码:
#include<stdio.h>
#include<malloc.h>
int main()
{
int *b,n,m,i,j,k,t;
while(scanf("%d",&n)!=EOF)
{
for(i=0;i<n;i++)
{
scanf("%d",&m);
m=m+1;
b=(int*)malloc(sizeof(int)*m);
for(j=1;j<m;j++)
scanf("%d",&b[j]);
for(j=1,k=0;j<=m;j++)
{
k=j*3+b[j];
if(k>60) //判断跳的时间是否超过60秒
break;
}
//printf("%d ",j);
if(j>m-1)
printf("%d\n",60-3*(m-1)); //没有超过60秒的
else
{
t=60-3*(j-1);
if(t<b[j]) //判断调坏之后的时间是否还够下一次在跳的时间(3秒)。
printf("%d\n",t);
else
printf("%d\n",b[j]);
}
}
free(b);
}
return 0;
}