[Preliminar de la Copa Blue Bridge 2015] Galaxy Bomb

Inserte la descripción de la imagen aquí

#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
*/

Supongo que te gusta

Origin blog.csdn.net/banxiaCSDN/article/details/112696080
Recomendado
Clasificación