USACO 1.1.3 Friday the Thirteenth

比較簡單,直接模擬,需要注意閏年的判斷和對不同月份日期的處理。

代碼如下:


/*
ID: michael139
LANG: C
PROG: friday
*/
#include<stdio.h>
#include<string.h>
int is_leapYear(int y);
int main () {
    FILE *fin  = fopen ("friday.in", "r");
    FILE *fout = fopen ("friday.out", "w");
    int n,i,j,cur,count[7];
    while (fscanf(fin,"%d",&n) != EOF) {
        memset(count,0,sizeof(count));
        cur = 2;//Monday
        for (i=1900;i<=1900+n-1;i++) {
            for (j=1;j<=12;j++) {
                cur += 12;
                count[cur%7] ++ ;
                if (j==1 || j==3 || j==5 || j==7 || j==8 || j==10 || j==12) {
                    cur += 19;
                } else if (j==4 || j==6 || j==9 || j==11) {
                    cur += 18;
                } else {
                    if (is_leapYear(i)) cur += 17;
                    else cur += 16;
                }
            }
        }
        for (i=0;i<7;i++) {
            fprintf(fout,"%d",count[i]);
            if (i!=6) fprintf(fout," ");
        }
        fprintf(fout,"\n");
    }
    return 0;
}
int is_leapYear(int y) {
    return (y%4==0) && (y%100!=0 || y%400==0);
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章