日期计算 2013蓝桥杯C/C++ B组1 高斯日记

题面

高斯出生于1777年4月30日
他习惯用出生至今多少天记录事件。
如高斯记录自己某次事件的日期为5343,实际为1791年12月15日
现在已知高斯获得博士学位时数字为8113,请问实际日期时多少?
格式写为xxxx-0x-0x

AC代码
#include <bits/stdc++.h>
using namespace std;
int tim[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,31,31,30,31,30,31}};
bool is(int x){
	if(x%100 == 0){
		return !(x%400);
	}else{
		return !(x%4);
	}
}
int main(){
	int y=1777,m=4,d=30;
	int n = 8112;
	while(n--){
		d++;
		bool fg = is(y);//判断当年是不是闰年 
		if(d>tim[fg][m]){
			d%=tim[fg][m];
			m++;
		}
		if(m>12){
			m%=12;
			y++;
		}
	}
	printf("%d-%02d-%02d",y,m,d);
	
	return 0;
}
  1. 出生那一天算不算第一天?——用给出的案例5343验证代码
  2. 输出格式的控制不要忘了
  3. 答案1799-07-16
发布了34 篇原创文章 · 获赞 1 · 访问量 2600

猜你喜欢

转载自blog.csdn.net/qq_39685968/article/details/104487387
今日推荐