大数学家高斯有个好习惯:无论如何都要记日记。
他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如: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;
}
用VB解决: