zoukankan      html  css  js  c++  java
  • USACO 1.1.3 Friday The Thirteenth

    //译题
    //★Friday the Thirteenth 黑色星期五
    13 号又是星期五是一个不寻常的日子吗?
    13 号在星期五比在其他日少吗?为了回答这个问题,写一个程序来计算在n 年里13
    日落在星期一,星期二......星期日的次数.这个测试从1900 年1 月1 日到
    1900+n-1 年12 月31 日.n 是一个非负数且不大于400.
    这里有一些你要知道的:
    1900 年1 月1 日是星期一.
    4,6,11 和9 月有30 天.其他月份除了2 月有31 天.闰年2 月有29 天,平年2 月有28 天.
    年份可以被4 整除的为闰年(1992=4*498 所以 1992 年是闰年,但是1990 年不是闰年)
    以上规则不适合于世纪年.可以被400 整除的世纪年为闰年,否则为平年.所以,1700,1800,19002100 年是平年,而2000 年是闰年.
    请不要预先算好数据!
    PROGRAM NAME: friday
    INPUT FORMAT
    一个整数n.
    SAMPLE INPUT (file friday.in)
    20
    OUTPUT FORMAT
    七个在一行且相分开的整数,它们代表13 日是星期六,星期日,星期一.....星期五的次数.
    SAMPLE OUTPUT (file friday.out)
    36 33 34 33 35 35 34
    /*
    ID: china_l
    LANG: C
    TASK: friday
    */
    #include<stdio.h>
    int main()
    {
        int mon[12]={31,28,31,30,31,30,31,31,30,31,30,31};
        int day[7]={0};                         
        int i,j,n,t=1900,m=6;            
        freopen("friday.in","r",stdin);
        freopen("friday.out","w",stdout);
        
        scanf("%d",&n);
        t+=n;
        for(i=1900;i<t;i++)
        {
            if(i%400 == 0 ||(i%100!=0 && i%4 == 0))    //判断是否是闰年 
                mon[1]=29;                            //是,2月为29天 
            else mon[1]=28;                            //不是,2月为28天 
            
            for(j=0;j<12;j++)                        //然后计算每个月的13号是星期几 
            {                                        //因为1900.1.1是星期一,1900.1.13是星期六,最开始m=6代表的就是1.13号是星期六 
                day[m]++;                            //在数组中对应的星期+1(day[0-6],分别对应星期日,星期一到星期六) 
                m+=mon[j];                            //加上本月的天数,得到下个月13号的天数 
                m%=7;                                //%7,得到下个月的13号对应的是星期几 
            }                                        //因为7%7=0;所以星期天的总天数存放在day[0]中
        }
        printf("%d",day[6]);                    //按照题目意思,先打印星期六 
        for(i=0;i<6;i++)                        //然后打印星期天,星期一到星期五 
            printf(" %d",day[i]);
        printf("
    ");
        return 0;
    }
  • 相关阅读:
    将 20M 文件从 30 秒压缩到 1 秒,我是如何做到的?
    Java 四种线程池newCachedThreadPool,newFixedThreadPool,newScheduledThreadPool,newSingleThreadExecutor
    HTTP返回状态码及错误大全
    network ifconfig
    linux lsof
    thrift types
    thrift concepts
    network uds(Unix domain socket)
    kernel 自定义coredump文件名及位置
    word 段内与段间换行
  • 原文地址:https://www.cnblogs.com/Lee-geeker/p/3222448.html
Copyright © 2011-2022 走看看