高斯日期 |
您所在的位置:网站首页 › 高斯生日8113 › 高斯日期 |
高斯日期
问题描述Sample InputSample Output完整代码如下解题思路
问题描述
大数学家高斯有个好习惯:无论如何都要记日记。 他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210 后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢? 高斯出生于:1777年4月30日。 在高斯发现的一个重要定理的日记上标注着:5343,因此可算出那天是:1791年12月15日。 高斯获得博士学位的那天日记上标着:8113 请你算出高斯获得博士学位的年月日。 提交答案的格式是:yyyy-mm-dd, 例如:1980-03-21 Sample Input5343 8113 Sample Output1791-12-15 1799-07-16 完整代码如下 #include #include /**普通闰年:能被4整除但不能被100整除的年份为普通闰年。 世纪闰年:能被400整除的为世纪闰年。**/ /** 闰年的2月有29天,平年的2月只有28天。 **/ bool isLeap(int y)//判断闰年 { if(y%400!=0&&(y%4==0 && y%100!=0)) return true; return false; } int main() { int n; int y = 1777; int m = 4; int d = 30; while(~scanf("%d",&n)) { y=1777; m=4; d=30; for(int i=2;i//闰年的2月30日等于3月1日,平年的2月29日相当于3月1日 m = 3; d = 1; }else if(m==12 && d==32){//12月32日相当于下一年1月1日 y++; m=1; d=1; }else if(d == 32 &&(m==1||m==3||m==5||m==7||m==8||m==10)) {//对于大月下天数为32日的,均为下一个月的1日 m++; d=1; }else if(d == 31 &&(m==4||m==6||m==9||m==11)) {//对于小月下天数为31日的,均为下一个月的1日 m++; d=1; } } printf("%04d-%02d-%02d\n",y,m,d);//左对齐补0 } return 0; } 解题思路依据题意,可得如果日记上标注 1,则为1777-04-30.因为高斯这货把他出生算为一天! 然而就本题来说其实是道填空题,在考场上不要用编程来解决,手算+excel更快些: 1777-4-30是第一天,这年过完,是第x天, x=1+31+30+31+31+30+31+30+31=155+91=246 1778年365天 1779年365天 1780年366天 …… 过完1798年共7916天,还差197天 1799年前六个月共181天,还差16天 因此答案为1799-7-16 最后一句:对于蓝桥杯省的填空题,excel是个很好的工具,特别是求和公式。 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |