zoukankan      html  css  js  c++  java
  • USACO Training Section 1.1黑色星期五Friday the Thirteenth

    题目描述
    13号又是一个星期五。13号在星期五比在其他日子少吗?为了回答这个问题,写一个程序,要求计算每个月的十三号落在周一到周日的次数。给出N年的一个周期,要求计算1900年1月1日至1900+N-1年12月31日中十三号落在周一到周日的次数,N为正整数且不大于400.

    这里有一些你要知道的:

    1、1900年1月1日是星期一.

    2、4,6,11和9月有30天.其他月份除了2月都有31天.闰年2月有29天,平年2月有28天.

    3、年份可以被4整除的为闰年(1992=4*498 所以 1992年是闰年,但是1990年不是闰年).

    4、以上规则不适合于世纪年。可以被400整除的世纪年为闰年,否则为平年。所以,1700,1800,1900和2100年是平年,而2000年是闰年.

    请不要调用现成的函数

    请不要预先算好数据(就是叫不准打表)!

    输入输出格式
    输入格式:
    一个正整数n.

    输出格式:
    **输出请从周六开始

    输入输出样例
    输入样例#1:
    20
    输出样例#1:
    36 33 34 33 35 35 34
    说明
    题目翻译来自NOCOW。
    附上某神人的强模拟,很强,600行

    #include<cstdio>
    
    using namespace std;
    
    bool isLeapYear(int year){
        if(year == 1900 || year == 2000 || year == 2100 || year == 2200 || year == 2300 || year == 2400 || year == 2500){
            if(year % 400 == 0){
                return true;
            }
        }else if(year % 4 == 0){
            return true;
        }
    
        return false;
    }
    
    int main(){
        int n;
        scanf("%d",&n);
    
        int ans[7] = {};
    
        int day = 1;
        for(int i = 1900;i < 1900 + n;i++){
            if(isLeapYear(i) == false){
                for(int j = 0;j < 31;j++){//平年1月 
                    if(j == 13){
                        if(day == 1){
                            ans[day - 1]++;
                        }else if(day == 2){
                            ans[day - 1]++;
                        }else if(day == 3){
                            ans[day - 1]++;
                        }else if(day == 4){
                            ans[day - 1]++;
                        }else if(day == 5){
                            ans[day - 1]++;
                        }else if(day == 6){
                            ans[day - 1]++;
                        }else if(day == 7){
                            ans[day - 1]++;
                        }
                    }
    
                    day++;
    
                    if(day > 7){
                        day = 1;
                    }
                }
    
                for(int j = 0;j < 28;j++){//平年2月 
                    if(j == 13){
                        if(day == 1){
                            ans[day - 1]++;
                        }else if(day == 2){
                            ans[day - 1]++;
                        }else if(day == 3){
                            ans[day - 1]++;
                        }else if(day == 4){
                            ans[day - 1]++;
                        }else if(day == 5){
                            ans[day - 1]++;
                        }else if(day == 6){
                            ans[day - 1]++;
                        }else if(day == 7){
                            ans[day - 1]++;
                        }
                    }
    
                    day++;
    
                    if(day > 7){
                        day = 1;
                    }
                }
    
                for(int j = 0;j < 31;j++){//平年3月 
                    if(j == 13){
                        if(day == 1){
                            ans[day - 1]++;
                        }else if(day == 2){
                            ans[day - 1]++;
                        }else if(day == 3){
                            ans[day - 1]++;
                        }else if(day == 4){
                            ans[day - 1]++;
                        }else if(day == 5){
                            ans[day - 1]++;
                        }else if(day == 6){
                            ans[day - 1]++;
                        }else if(day == 7){
                            ans[day - 1]++;
                        }
                    }
    
                    day++;
    
                    if(day > 7){
                        day = 1;
                    }
                }
    
                for(int j = 0;j < 30;j++){//平年4月 
                    if(j == 13){
                        if(day == 1){
                            ans[day - 1]++;
                        }else if(day == 2){
                            ans[day - 1]++;
                        }else if(day == 3){
                            ans[day - 1]++;
                        }else if(day == 4){
                            ans[day - 1]++;
                        }else if(day == 5){
                            ans[day - 1]++;
                        }else if(day == 6){
                            ans[day - 1]++;
                        }else if(day == 7){
                            ans[day - 1]++;
                        }
                    }
    
                    day++;
    
                    if(day > 7){
                        day = 1;
                    }
                }
    
                for(int j = 0;j < 31;j++){//平年5月 
                    if(j == 13){
                        if(day == 1){
                            ans[day - 1]++;
                        }else if(day == 2){
                            ans[day - 1]++;
                        }else if(day == 3){
                            ans[day - 1]++;
                        }else if(day == 4){
                            ans[day - 1]++;
                        }else if(day == 5){
                            ans[day - 1]++;
                        }else if(day == 6){
                            ans[day - 1]++;
                        }else if(day == 7){
                            ans[day - 1]++;
                        }
                    }
    
                    day++;
    
                    if(day > 7){
                        day = 1;
                    }
                }
    
                for(int j = 0;j < 30;j++){//平年6月 
                    if(j == 13){
                        if(day == 1){
                            ans[day - 1]++;
                        }else if(day == 2){
                            ans[day - 1]++;
                        }else if(day == 3){
                            ans[day - 1]++;
                        }else if(day == 4){
                            ans[day - 1]++;
                        }else if(day == 5){
                            ans[day - 1]++;
                        }else if(day == 6){
                            ans[day - 1]++;
                        }else if(day == 7){
                            ans[day - 1]++;
                        }
                    }
    
                    day++;
    
                    if(day > 7){
                        day = 1;
                    }
                }
    
                for(int j = 0;j < 31;j++){//平年7月 
                    if(j == 13){
                        if(day == 1){
                            ans[day - 1]++;
                        }else if(day == 2){
                            ans[day - 1]++;
                        }else if(day == 3){
                            ans[day - 1]++;
                        }else if(day == 4){
                            ans[day - 1]++;
                        }else if(day == 5){
                            ans[day - 1]++;
                        }else if(day == 6){
                            ans[day - 1]++;
                        }else if(day == 7){
                            ans[day - 1]++;
                        }
                    }
    
                    day++;
    
                    if(day > 7){
                        day = 1;
                    }
                }
    
                for(int j = 0;j < 31;j++){//平年8月 
                    if(j == 13){
                        if(day == 1){
                            ans[day - 1]++;
                        }else if(day == 2){
                            ans[day - 1]++;
                        }else if(day == 3){
                            ans[day - 1]++;
                        }else if(day == 4){
                            ans[day - 1]++;
                        }else if(day == 5){
                            ans[day - 1]++;
                        }else if(day == 6){
                            ans[day - 1]++;
                        }else if(day == 7){
                            ans[day - 1]++;
                        }
                    }
    
                    day++;
    
                    if(day > 7){
                        day = 1;
                    }
                }
    
                for(int j = 0;j < 30;j++){//平年9月 
                    if(j == 13){
                        if(day == 1){
                            ans[day - 1]++;
                        }else if(day == 2){
                            ans[day - 1]++;
                        }else if(day == 3){
                            ans[day - 1]++;
                        }else if(day == 4){
                            ans[day - 1]++;
                        }else if(day == 5){
                            ans[day - 1]++;
                        }else if(day == 6){
                            ans[day - 1]++;
                        }else if(day == 7){
                            ans[day - 1]++;
                        }
                    }
    
                    day++;
    
                    if(day > 7){
                        day = 1;
                    }
                }
    
                for(int j = 0;j < 31;j++){//平年10月 
                    if(j == 13){
                        if(day == 1){
                            ans[day - 1]++;
                        }else if(day == 2){
                            ans[day - 1]++;
                        }else if(day == 3){
                            ans[day - 1]++;
                        }else if(day == 4){
                            ans[day - 1]++;
                        }else if(day == 5){
                            ans[day - 1]++;
                        }else if(day == 6){
                            ans[day - 1]++;
                        }else if(day == 7){
                            ans[day - 1]++;
                        }
                    }
    
                    day++;
    
                    if(day > 7){
                        day = 1;
                    }
                }
    
                for(int j = 0;j < 30;j++){//平年11月 
                    if(j == 13){
                        if(day == 1){
                            ans[day - 1]++;
                        }else if(day == 2){
                            ans[day - 1]++;
                        }else if(day == 3){
                            ans[day - 1]++;
                        }else if(day == 4){
                            ans[day - 1]++;
                        }else if(day == 5){
                            ans[day - 1]++;
                        }else if(day == 6){
                            ans[day - 1]++;
                        }else if(day == 7){
                            ans[day - 1]++;
                        }
                    }
    
                    day++;
    
                    if(day > 7){
                        day = 1;
                    }
                }
    
                for(int j = 0;j < 31;j++){//平年12月 
                    if(j == 13){
                        if(day == 1){
                            ans[day - 1]++;
                        }else if(day == 2){
                            ans[day - 1]++;
                        }else if(day == 3){
                            ans[day - 1]++;
                        }else if(day == 4){
                            ans[day - 1]++;
                        }else if(day == 5){
                            ans[day - 1]++;
                        }else if(day == 6){
                            ans[day - 1]++;
                        }else if(day == 7){
                            ans[day - 1]++;
                        }
                    }
    
                    day++;
    
                    if(day > 7){
                        day = 1;
                    }
                }
            }else{
                for(int j = 0;j < 31;j++){//闰年1月 
                    if(j == 13){
                        if(day == 1){
                            ans[day - 1]++;
                        }else if(day == 2){
                            ans[day - 1]++;
                        }else if(day == 3){
                            ans[day - 1]++;
                        }else if(day == 4){
                            ans[day - 1]++;
                        }else if(day == 5){
                            ans[day - 1]++;
                        }else if(day == 6){
                            ans[day - 1]++;
                        }else if(day == 7){
                            ans[day - 1]++;
                        }
                    }
    
                    day++;
    
                    if(day > 7){
                        day = 1;
                    }
                }
    
                for(int j = 0;j < 29;j++){//闰年2月 
                    if(j == 13){
                        if(day == 1){
                            ans[day - 1]++;
                        }else if(day == 2){
                            ans[day - 1]++;
                        }else if(day == 3){
                            ans[day - 1]++;
                        }else if(day == 4){
                            ans[day - 1]++;
                        }else if(day == 5){
                            ans[day - 1]++;
                        }else if(day == 6){
                            ans[day - 1]++;
                        }else if(day == 7){
                            ans[day - 1]++;
                        }
                    }
    
                    day++;
    
                    if(day > 7){
                        day = 1;
                    }
                }
    
                for(int j = 0;j < 31;j++){//闰年3月 
                    if(j == 13){
                        if(day == 1){
                            ans[day - 1]++;
                        }else if(day == 2){
                            ans[day - 1]++;
                        }else if(day == 3){
                            ans[day - 1]++;
                        }else if(day == 4){
                            ans[day - 1]++;
                        }else if(day == 5){
                            ans[day - 1]++;
                        }else if(day == 6){
                            ans[day - 1]++;
                        }else if(day == 7){
                            ans[day - 1]++;
                        }
                    }
    
                    day++;
    
                    if(day > 7){
                        day = 1;
                    }
                }
    
                for(int j = 0;j < 30;j++){//闰年4月 
                    if(j == 13){
                        if(day == 1){
                            ans[day - 1]++;
                        }else if(day == 2){
                            ans[day - 1]++;
                        }else if(day == 3){
                            ans[day - 1]++;
                        }else if(day == 4){
                            ans[day - 1]++;
                        }else if(day == 5){
                            ans[day - 1]++;
                        }else if(day == 6){
                            ans[day - 1]++;
                        }else if(day == 7){
                            ans[day - 1]++;
                        }
                    }
    
                    day++;
    
                    if(day > 7){
                        day = 1;
                    }
                }
    
                for(int j = 0;j < 31;j++){//闰年5月 
                    if(j == 13){
                        if(day == 1){
                            ans[day - 1]++;
                        }else if(day == 2){
                            ans[day - 1]++;
                        }else if(day == 3){
                            ans[day - 1]++;
                        }else if(day == 4){
                            ans[day - 1]++;
                        }else if(day == 5){
                            ans[day - 1]++;
                        }else if(day == 6){
                            ans[day - 1]++;
                        }else if(day == 7){
                            ans[day - 1]++;
                        }
                    }
    
                    day++;
    
                    if(day > 7){
                        day = 1;
                    }
                }
    
                for(int j = 0;j < 30;j++){//闰年6月 
                    if(j == 13){
                        if(day == 1){
                            ans[day - 1]++;
                        }else if(day == 2){
                            ans[day - 1]++;
                        }else if(day == 3){
                            ans[day - 1]++;
                        }else if(day == 4){
                            ans[day - 1]++;
                        }else if(day == 5){
                            ans[day - 1]++;
                        }else if(day == 6){
                            ans[day - 1]++;
                        }else if(day == 7){
                            ans[day - 1]++;
                        }
                    }
    
                    day++;
    
                    if(day > 7){
                        day = 1;
                    }
                }
    
                for(int j = 0;j < 31;j++){//闰年7月 
                    if(j == 13){
                        if(day == 1){
                            ans[day - 1]++;
                        }else if(day == 2){
                            ans[day - 1]++;
                        }else if(day == 3){
                            ans[day - 1]++;
                        }else if(day == 4){
                            ans[day - 1]++;
                        }else if(day == 5){
                            ans[day - 1]++;
                        }else if(day == 6){
                            ans[day - 1]++;
                        }else if(day == 7){
                            ans[day - 1]++;
                        }
                    }
    
                    day++;
    
                    if(day > 7){
                        day = 1;
                    }
                }
    
                for(int j = 0;j < 31;j++){//闰年8月 
                    if(j == 13){
                        if(day == 1){
                            ans[day - 1]++;
                        }else if(day == 2){
                            ans[day - 1]++;
                        }else if(day == 3){
                            ans[day - 1]++;
                        }else if(day == 4){
                            ans[day - 1]++;
                        }else if(day == 5){
                            ans[day - 1]++;
                        }else if(day == 6){
                            ans[day - 1]++;
                        }else if(day == 7){
                            ans[day - 1]++;
                        }
                    }
    
                    day++;
    
                    if(day > 7){
                        day = 1;
                    }
                }
    
                for(int j = 0;j < 30;j++){//闰年9月 
                    if(j == 13){
                        if(day == 1){
                            ans[day - 1]++;
                        }else if(day == 2){
                            ans[day - 1]++;
                        }else if(day == 3){
                            ans[day - 1]++;
                        }else if(day == 4){
                            ans[day - 1]++;
                        }else if(day == 5){
                            ans[day - 1]++;
                        }else if(day == 6){
                            ans[day - 1]++;
                        }else if(day == 7){
                            ans[day - 1]++;
                        }
                    }
    
                    day++;
    
                    if(day > 7){
                        day = 1;
                    }
                }
    
                for(int j = 0;j < 31;j++){//闰年10月 
                    if(j == 13){
                        if(day == 1){
                            ans[day - 1]++;
                        }else if(day == 2){
                            ans[day - 1]++;
                        }else if(day == 3){
                            ans[day - 1]++;
                        }else if(day == 4){
                            ans[day - 1]++;
                        }else if(day == 5){
                            ans[day - 1]++;
                        }else if(day == 6){
                            ans[day - 1]++;
                        }else if(day == 7){
                            ans[day - 1]++;
                        }
                    }
    
                    day++;
    
                    if(day > 7){
                        day = 1;
                    }
                }
    
                for(int j = 0;j < 30;j++){//闰年11月 
                    if(j == 13){
                        if(day == 1){
                            ans[day - 1]++;
                        }else if(day == 2){
                            ans[day - 1]++;
                        }else if(day == 3){
                            ans[day - 1]++;
                        }else if(day == 4){
                            ans[day - 1]++;
                        }else if(day == 5){
                            ans[day - 1]++;
                        }else if(day == 6){
                            ans[day - 1]++;
                        }else if(day == 7){
                            ans[day - 1]++;
                        }
                    }
    
                    day++;
    
                    if(day > 7){
                        day = 1;
                    }
                }
    
                for(int j = 0;j < 31;j++){//闰年12月 
                    if(j == 13){
                        if(day == 1){
                            ans[day - 1]++;
                        }else if(day == 2){
                            ans[day - 1]++;
                        }else if(day == 3){
                            ans[day - 1]++;
                        }else if(day == 4){
                            ans[day - 1]++;
                        }else if(day == 5){
                            ans[day - 1]++;
                        }else if(day == 6){
                            ans[day - 1]++;
                        }else if(day == 7){
                            ans[day - 1]++;
                        }
                    }
    
                    day++;
    
                    if(day > 7){
                        day = 1;
                    }
                }
            }
        }
    
        printf("%d ",ans[6]);
        printf("%d ",ans[0]);
        printf("%d ",ans[1]);
        printf("%d ",ans[2]);
        printf("%d ",ans[3]);
        printf("%d ",ans[4]);
        printf("%d ",ans[5]);
    
        return 0;
    }
    
  • 相关阅读:
    记录一次腾讯云服务器进挖矿病毒的事故
    Django组件:django-simple-captcha 使用
    RabbitMQ延迟队列(Python版)
    RabbitMQ CLI 管理工具 rabbitmqadmin(管理)
    Django Rest Framework组件:用户访问次数/频率限制BaseThrottle
    GitLab 持续集成
    Windows10搭建Spark+Python开发环境
    Python 应用自动化部署工具Fabirc
    Prometheus:Prometheus开发中间件Exporter
    qs 和 headers: { "content-type": "application/x-www-form-urlencoded" }, data: qs.stringify(data) 必须同时设置
  • 原文地址:https://www.cnblogs.com/lunatic-talent/p/12798955.html
Copyright © 2011-2022 走看看