[蓝桥杯2015初赛]星系炸弹

在这里插入图片描述

#include<stdio.h>

int a[2][12]={31,28,31,30,31,30,31,31,30,31,30,31,31,29,31,30,31,30,31,31,30,31,30,31};
int sumy[2]={365,366}; 
int py,pm,pd;
int year(int y){
	if((y%4==0&&y%100!=0)||y%400==0)
		return 1;
	return 0;
}
int numm(int y,int m,int d,int n){
	int t=year(y),k=0;
	if(a[t][m-1]-d>=n){
		py=y;
		pm=m;
		pd=d+n;
		return 0;
	}
	n=n-(a[t][m-1]-d);
	while(n>a[t][m]){
		n=n-a[t][m];
		m=m+1;
		k=1;
	}
	m=m+1;
	py=y;
	pm=m;
	pd=n;
	return 0;
}
int numy(int y,int m,int d,int n){
	while(n>sumy[year(y)]){
		n=n-sumy[year(y)];
		y=y+1;
	}
	numm(y,m,d,n);
}
int main(){
	int y,m,d,n,sy,sm,i;
	while(scanf("%d %d %d %d",&y,&m,&d,&n)!=EOF){
		sm=0;
		for(i=0;i<m-1;i++)
			sm+=a[year(y)][i];
		sm+=d;
		sy=sumy[year(y)]-sm;
		if(sy>=n)
			numm(y,m,d,n);
		else{
			n=n-sy;
			y=y+1;
			m=1;
			d=1;
			numy(y,m,d,n-1);
		}
		printf("%04d-%02d-%02d\n",py,pm,pd);
	}
}
/*
2015 1 1 15
2014 11 9 1000
2021 1 1 31
2021 1 1 365
2021 1 1 254
2021 1 1 619
*/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值