求助!

P1167 刷题

Xiaohanmu @ 2024-09-07 19:42:07

#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
int a[10005];
int start[10];
int endd[10];
int m1[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};                           //平年的十二个月
int m2[13] = {0,31,29,31,30,31,30,31,31,30,31,30,31};                           //闰年的十二个月 
bool check(int x)
{
    if((x%4==0 && x%400!=0) || x%400==0)                                        //判断闰年 
    {
        return 1;
    }
    else
    {
        return 0;
    }
}
int main()
{
    int n;
    scanf("%d",&n);
    for(int i = 1;i<=n;i++)
    {
        scanf("%d",&a[i]);
    }
    scanf("%d-%d-%d-%d:%d",&start[1],&start[2],&start[3],&start[4],&start[5]);
    scanf("%d-%d-%d-%d:%d",&endd[1],&endd[2],&endd[3],&endd[4],&endd[5]);
    int time = 0;
    for(int i = start[1];i<endd[1];i++)
    {
        if(check(i))                                                          //如果期间有一个闰年 
        {
            time += 366;                                                     //闰年天数 
        }
        else
        {
            time += 365;                                                     //平年天数 
        }
    }
    if(check(start[1]))                                                      //如果第一年是闰年 
    {
        for(int i = 1;i<start[2];i++)
        {
            time-=m2[i];                                                    //处理月 
        }
    }
    else
    {
        for(int i = 1;i<start[2];i++)
        {
            time-=m1[i];
        }
    }
    if(check(endd[1]))
    {
        for(int i = 1;i<endd[2];i++)
        {
            time+=m2[i];
        }
    } 
    else
    {
        for(int i = 1;i<endd[2];i++)
        {
            time+=m1[i];
        }
    }
    for(int i = 1;i<start[3];i++)
    {
        time--;
    }
    for(int i = 1;i<endd[3];i++)
    {
        time++;
    }
    time = time * 60 * 24;                                                          //乘上一天的分钟数 
    //再把小时换算一下                                                      
    time -= 60*start[4]+start[5];                                       
    time += 60*endd[4]+endd[5];
    int ans = 0;
    for(int i = 1;i<=n;i++)
    {
        if(time>=a[i])
        {   
            time-=a[i];
            ans++;
        }
        else
        {
            break;
        }
    }
    printf("%d",ans);   
    return 0;
}

|