高斯日记
大数学家高斯有个好习惯:无论如何都要记日记。
他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210
后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢?
高斯出生于:1777年4月30日。
在高斯发现的一个重要定理的日记上标注着:5343,因此可算出那天是:1791年12月15日。
高斯获得博士学位的那天日记上标着:8113
请你算出高斯获得博士学位的年月日。
提交答案的格式是:yyyy-mm-dd, 例如:1980-03-21
请严格按照格式,通过浏览器提交答案。
注意:只提交这个日期,不要写其它附加内容,比如:说明性的文字。
答案:
1799-7-16
题解:
判断闰年。。。。写代码????手算????拉excel???用用VB秒掉。。。!!!
用代码解决:
#include<stdio.h> #include<string.h> #include<algorithm> #include<math.h> #define INF 0x3f3f3f3f #define ll long long #define N 10010 #define M 1000000007 using namespace std; int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; int b[13]={0,31,29,31,30,31,30,31,31,30,31,30,31}; int main() { int n; int dd=246; int i; while(scanf("%d",&n)!=EOF) //输入8113 //输出:1799-7-16 { int y=1777; if(n<=245) { int k=5; while(n>=30) { n-=a[k]; k++; } printf("%d-%d-%d\n",y,k,n); } else { n-=246; y++; while(n>=365) { if(y%4==0&&y%100!=0||y%400==0) n-=366; else n-=365; y++; } if(n>0) { for(i=1;i<13;i++) { if(y%4==0&&y%100!=0||y%400==0) { if(n>=29) n-=b[i]; else break; } else { if(n>=28) n-=a[i]; else break; } if(n==0) n++; } printf("%d-%d-%d\n",y,i,n); } else printf("%d-12-31\n",y); } } return 0; }