2013长沙网络赛 E题(水题 有点小bug)

来源:互联网 发布:php资源网源码 编辑:程序博客网 时间:2024/04/30 09:10
Travel by Bike

Time Limit: 1 Second      Memory Limit: 32768 KB

Recently, Fancy is invited by his best friend to make a trip to his new house. Fancy is really excited by the invitation, so he's going to start the trip as soon as possible. But there are several difficulties to overcome. First, his friend is living in Changsha and Fancy is living in Hangzhou, so the trip is really a long one. Second, Fancy has only a bike to make this trip. Third, Fancy is a strange guy who would never work for longer than 8 hours on weekdays, and he would never work for longer than 4 hours on the weekend.

During this trip, Fancy thinks that riding bike is his only work. So on days of Monday to Friday, he will ride his bike 8 hours at most, and on Saturday and Sunday, he will ride 4 hours at most. Obviously, he will finish the trip as early as possible.

Now Fancy is going to start the trip, with information of road length and his riding speed, he wants to know that what day is his arriving day.

Input

There'll be several test cases. For each test case, there will be a string startday (startday ∈ {'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'}), an integerL (100 ≤ L ≤ 1000000000) and a float number s (5 ≤ s ≤ 30, with at most 3 decimal points). Here startday is the day which Fancy start the trip, L is the total length of the trip (in kilometer) and s is Fancy's riding speed (kilometer per hour).

Output

For each test case, please print the earlist day called arriveday which Fancy will arrive at Changsha. Please note that your output should fulfill arriveday ∈ {'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'}.

Sample Input

Monday 800 25.0Sunday 300 5.0

Sample Output

ThursdayMonday


          题目大意:很简单的代码哈哈!!很简单的水题,输入当前星期几,然后是总共走的路程,每小时的速度。周一到周五每天可以行8小时,周六周日每天可以行4小时。问你走完这些路会在星期几?

     解题思路:开始直接减去整周的,距离能整除每周48小时的算剩下的余数。然后判断是周一到周五再看距离,如果小于等于8*v,就直接跳出,表示这一天可以走到,不是的话l-=8*v,继续。判断是周一到周五再看距离,如果小于等于8*v,就直接跳出,表示这一天可以走到,不是的话l-=8*v,继续。不过需要注意的是,可能会出现整除的情况,就是刚好距离是48*v的整数呗,这时候是(sta-1)%7就可以到达,而不是sta。这点debug了好久。具体见代码。

         题目地址:Travel by Bike

AC代码:
#include<iostream>#include<cstring>#include<cmath>#include<cstring>#include<cstdio>#include<algorithm>#include<map>using namespace std;double eps=0.0001;char a[7][20]= {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"};int main(){    char s[20];    double l,v;  //距离与一小时的速度    double weekv,eiv,fouv;    //一周的路程,八小时的路程,四小时的路程    int i,sta;    while(~scanf("%s%lf%lf",s,&l,&v))    {        for(i=0; i<7; i++)            if(strcmp(a[i],s)==0)            {                sta=i;                break;            }        weekv=48.0*v,eiv=8.0*v,fouv=4.0*v;        int len=l/weekv;        l-=len*weekv;        if(l==0)            sta=(sta-1+7)%7;   //说明一个回合过来了,好不容易找出来的bug        else        {            while(l>=0)            {                if(sta>=0&&sta<=4)  //周一到周五可以走到                {                    if(l<=eiv)                        break;                    l-=eiv;   //周一到周五不能走到                    sta=(sta+1)%7;                }                else                {                    if(l<=fouv)  //周六到周日可以走到                        break;                    l-=fouv;                    sta=(sta+1)%7;  //周六到周日不能走到                }            }        }        cout<<a[sta]<<endl;    }    return 0;}


原创粉丝点击