[USACO 1.1.3]黑色星期五 (水题再一道)

题目:http://hustoj.sinaapp.com/problem.php?id=1818

自1900年以来所有的13日的星期数统计

题目的输出貌似有误:七个在一行且相分开的整数,它们代表13日是星期六,星期日,星期一.....星期五的次数.

实际情况的输出是从周一到周日依次输出。

思路:我的做法比较朴素...把所有的天数遍历一遍。还好数据无误。

#include<stdio.h>
int ans[7]={0};
int date=1,day=1;
int main()
{
    int n;
    int leap;
    scanf("%d",&n);
    for(int i=0;i<n;i++)
    {
        int year=1900+i;
        if((year%100!=0&&year%4==0)||(year%400==0)) leap=1;
        else leap=0;

            for(int j=1;j<=12;j++)
            {
                if(j==1||j==3||j==5||j==7||j==8||j==10||j==12)
                {
                    for (int k=0;k<31;k++)
                    {
                        date=(date+1)%7;
                        if(k==13) ans[date]++;
                    }
                }
            
                if(j==4||j==6||j==9||j==11)
                {
                    for (int k=0;k<30;k++)
                    {
                        date=(date+1)%7;
                        if(k==13) ans[date]++;
                    }
                }
                if(j==2)
                {
                    if(!leap)
                    {
                        for (int k=0;k<28;k++)
                        {
                            date=(date+1)%7;
                            if(k==13) ans[date]++;
                        }
                    }
                    else
                    {
                        for (int k=0;k<29;k++)
                        {
                            date=(date+1)%7;
                            if(k==13) ans[date]++;
                        }
                    }
                }        
            }

    }

    for(int i=1;i<=6;i++)
    {
        printf("%d ",ans[i]);
    }
    printf("%d\n",ans[0]);
}

 

posted @ 2012-12-24 00:49  Daniel Qiu  阅读(307)  评论(2编辑  收藏  举报