天天看點

2013 高斯日記

​​高斯日記 ​​

大數學家高斯有個好習慣:無論如何都要記日記。

他的日記有個與衆不同的地方,他從不注明年月日,而是用一個整數代替,比如: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解決:

在txt中寫入: msgbox dateadd("d",8112,"1777-4-30")

然後字尾名改為vbs.

點選打開。

答案自動出來。。。。

2013 高斯日記