NBUT 2013 Timed NOJ Training #003 C题 日期天数换算

来源:互联网 发布:前端后端区别知乎 编辑:程序博客网 时间:2024/05/16 19:48
/*C题 Nth Day is Which Day网址:http://acm.nbut.cn/Contest/view/id/34/problem/C.xhtml 题意:中文方法:打表,模拟 */ #include<iostream>#include<cstdio>using namespace std;int x[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};int y,m,d,k;int year[2100];void init(){    for(int i=0;i<2100;i++) year[i]=0;    year[1]=365;    int d=0;    k=1;    while(d<370000){        if((k%4==0) && (k%100!=0) || k%400==0) d+=366;        else d+=365;        year[k]=d;        k++;    }}int main(){    int n;    init();    while(scanf("%d",&n)!=EOF){        for(int i=1;i<k;i++){            if(n<=year[i]) { n-=year[i-1]; y=i; break; }         }        if(y%4==0 && y%100!=0 || y%400==0) x[2]=29;        else x[2]=28;        if(n==0) { printf("%d 12 31\n",y);continue; }        for(int i=1;i<=12;i++){             if(n<=x[i]) { d=n; m=i; break; }             n -= x[i];        }            printf("%d %d %d\n",y,m,d);    }}