USACO--friday

####Friday the Thirteenth####

簡述
要求你統計從1900年1月1日(Monday)到指定的1900+N-1年12月31日,其中的每個月13號是星期幾。
我設置了初值爲1989年12月13日,這天是星期三,然後就可以和後面的年份一樣的處理了。常數組就記下每個月對7取餘的多的數,就是比上個月的星期多的數。然後就統計到對應的一年。

代碼

#include <stdio.h>
#include <stdlib.h>
int ts[7];
int mon[12] = {3, 3, 0, 3, 2, 3, 2, 3, 3, 2, 3, 2};
int main(void)
{
    freopen("friday.in", "r", stdin);
    freopen("friday.out", "w", stdout);
    int i, j, n;
    int y = 1900, day = 3;
    scanf("%d", &n);
    for(i = 0; i < n; i++)
    {
        int leap = 0;
        y =1900 + i;
        if((y % 4 == 0 && y % 100 != 0)||(y % 400 == 0))leap = 1;
        for(j = 0; j < 12; j++)
        {
            if(j == 2 && leap)day++;
            day += mon[j];
            day %= 7;
            ts[day]++;
        }
    }
    printf("%d", ts[6]);
    for(i = 0; i < 6; i++)
        printf(" %d", ts[i]);
    printf("\n");
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章