回 帖 发 新 帖 刷新版面

主题:[转帖]2007百度之星5月27号全部初赛题

1.百度时间 
 Baidu的服务器上使用的不是北京时间,而是Baidu时间。Baidu时间的时分秒与北京时间相同,但是日期与北京时间不同,是用一个正整数表示从2000年1月1日开始经过了几天。

现在就请大家设计一个程序将北京时间转换为百度时间。在本题中,闰年的年份是400的倍数,或者是4的倍数但不是100的倍数。比如2000和8888均为闰年,但6100不是。


输入格式
输入数据的每一行为一个待转化的北京时间(不含空格和TAB),正确的格式包括两种:
一种为:YYYY-MM-DD,(YYYY表示四位数年份,MM为两位月份,DD为两位日期);
另一种为:MM  YY,(YYYY表示四位数年份,MM为两位月份,DD为两位日期);


输出格式
每个数据输出一行。如果可以成功转换,输出一个正整数,否则输出Error。 

输入样例 例
2000-01-01
AStar2007
05/26/2007


输出样例 例
0
Error
2702


评分规则


程序将运行在一台Linux机器上(内存使用不作严格限制),在每一测试用例上运行不能超过1秒,否则该用例不得分;

要求程序能按照输入样例的格式读取标准输入数据,按照输出样例的格式将运行结果输出到标准输出上。如果不能正确读入数据和输出数据,该题将不得分;

该题共有5个测试数据集,数据1和数据2中的所有日期均能成功转换。所有数据中,每行不超过20个字符,每组数据最多包含100行;

回复列表 (共22个回复)

21 楼

void shorttime(int** a)
{
    int k=number;    
    int y=0;
    int b;
    for(int y=0;y<total;y++)
    {    
        if(a[k][1]<1)
            k--;
        if(k==0 && a[k][1]==0)
            break;
        if(hand1.shortpower()<hand2.shortpower())
        {

            if(hand1.nopower()==1)
            {
                hand1.setleft(a[k][0]);        
            }    
            else if(hand1.nopower()==2)
                hand1.setright(a[k][0]);
            else if(hand1.nopower()==0)
            {
                if(k==0 && a[k][1]<2)
                    break;
                if(a[k][1]==1)
                {
                    b=a[k][0];
                    k--;    
                }
                else
                {
                    b=a[k][0];
                    a[k][1]--;
                }
                hand1.setdouble(a[k][0],b);
                y++;
                
            }
            
            hand2.setcurrent(hand1.shortpower());
        }
        else if(hand1.shortpower()==hand2.shortpower())
        {
            if(hand1.longpower()<=hand2.longpower())
            {
                if(hand1.nopower()==1)

                    hand1.setleft(a[k][0]);
            
                else if(hand1.nopower()==2)

                    hand1.setright(a[k][0]);

                else if(hand1.nopower()==0)
                {
                    if(k==0 && a[k][1]<3)
                        break;
                    if(a[k][1]==1)
                    {
                        b=a[k][0];
                        k--;    
                    }
                    else
                    {
                        b=a[k][0];
                        a[k][1]--;
                    }
                    hand1.setdouble(a[k][0],b);
                    y++;
                }
                y++;
                a[k][1]--;
                if(a[k][1]<1)
                    k--;
                if(k==0 && a[k][1]==0)
                    break;    
                if(hand2.nopower()==1)
                {
                    hand2.setleft(a[k][0]);        
                }    
                else if(hand2.nopower()==2)
                    hand2.setright(a[k][0]);
                else if(hand2.nopower()==0)
                {
                    if(k==0 && a[k][1]<2)
                        break;
                    if(a[k][1]==1)
                    {
                        b=a[k][0];
                        k--;    
                    }
                    else
                    {
                        b=a[k][0];
                        a[k][1]--;
                    }
                    hand2.setdouble(a[k][0],b);
                    y++;
                }
                
            }
            else 
            {

                if(hand2.nopower()==1)
                {
                    hand2.setleft(a[k][0]);        
                }    
                else if(hand2.nopower()==2)
                    hand2.setright(a[k][0]);
                else if(hand2.nopower()==0)
                {
                    if(k==0 && a[k][1]<3)
                        break;
                    if(a[k][1]==1)
                    {
                        b=a[k][0];
                        k--;    
                    }
                    else
                    {
                        b=a[k][0];
                        a[k][1]--;
                    }
                    hand2.setdouble(a[k][0],b);
                    y++;
                }
                y++;
                a[k][1]--;
                if(a[k][1]<1)
                    k--;
                if(k==0 && a[k][1]==0)
                    break;
                else if(k==0 && a[k][1]==0)
                if(hand1.nopower()==1)

                    hand1.setleft(a[k][0]);
            
                else if(hand1.nopower()==2)

                    hand1.setright(a[k][0]);

                
                
            }

                
        }
        else
        {
            if(hand2.nopower()==1)
            {
                hand2.setleft(a[k][0]);        
            }    
            else if(hand2.nopower()==2)
                hand2.setright(a[k][0]);
            else if(hand2.nopower()==0)
            {
                if(k==0 && a[k][1]<2)
                    break;
                if(a[k][1]==1)
                {
                    b=a[k][0];
                    k++;    
                }
                else
                {
                    b=a[k][0];
                    a[k][1]--;
                }
                hand2.setdouble(a[k][0],b);
                y++;
                
            }

            hand1.setcurrent(hand2.shortpower());
        }
        
        a[k][1]--;
    
    time2+=hand1.shortpower()<hand2.shortpower()?hand1.shortpower():hand2.shortpower();
    
    }






}

22 楼

The third is finished, yeath

我来回复

您尚未登录,请登录后再回复。点此登录或注册