• 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;
    }
    
  • 相关阅读:
    confluent-kafka python Producer Consumer实现
    kafka producer.poll producer.flush consumer.poll的区别
    kafka Java创建生产者报错:Invalid partition given with record: 1 is not in the range [0...1)
    Kafka通讯的Java实例
    虚机克隆搭建kafka服务器集群
    kafka报错解决:Broker may not be avaliable
    Kafka+Zookeeper+confluent-kafka搭建
    Kafka学习笔记
    【SpringCloud】 第十篇: 高可用的服务注册中心
    【SpringCloud】 第九篇: 服务链路追踪(Spring Cloud Sleuth)
  • 原文地址:https://www.cnblogs.com/lunatic-talent/p/12798954.html
Copyright © 2020-2023  润新知