求助!
  • 板块P1167 刷题
  • 楼主Xiaohanmu
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/9/7 19:42
  • 上次更新2024/9/7 22:00:21
查看原帖
求助!
1406804
Xiaohanmu楼主2024/9/7 19:42
#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;
}
2024/9/7 19:42
加载中...