一、题目
- 时间限制:
- 1000ms
- 内存限制:
- 65536kB
- 通过率85% 通过人数1017 尝试人数1197
- 描述
- 小朋友玩跳绳比赛,要计算在一分钟内跳了多少下.假设每秒钟跳一下,如果中途失败了,则要花三秒钟后才能开始重跳.一般小朋友跳绳一分钟要跳坏好几次.现在给出小朋友每次跳坏时已经跳的总数,求小朋友在一分钟内跳了多少下.(请注意分析示例数据.)
- 输入
- 第一行为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
- 提示
- 提示,在跳绳比赛时,你可能已经超时了,但自己还在计数,但裁判已经停止计时并得到成绩了.这里相当与自己计数.因此,并非跳坏的时候都是在前一分钟以内.请注意分析示例数据.
二、思路
挨个数据判断是否已经时间结束然后根据失败次数计算耽误时间,
注意:①考虑57-59秒失败的特殊情况
②对于超出60秒的多余数据的处理
三、测试数据
输入:1
4 38 56 63 68
输出:56
四、ac源代码
#include <stdio.h>
int main()
{
int i,j,n,w,sum,flag,k,x;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&w);flag=0;
for(j=0;j<w;j++)
{
scanf("%d",&sum);
if(flag!=-1&&(sum+3*(j+1))>59)
{flag=1;break;}//判断时间是否结束
}
for(k=j+1;k<w;k++)
scanf("%d",&x);//将剩余数据吃掉
if(flag&&(sum<=60)&&((sum+3*j)<=60))
printf("%d\n",sum);//若在57-59秒失败,直接输出结果
else
printf("%d\n",60-j*3);//否则减去失败耽误时间
}
return 0;
}