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;
    }
    
  • 相关阅读:
    chrome 开发者工具——前端实用功能总结
    而立之年——回顾我的前端转行之路
    编译原理实战入门:用 JavaScript 写一个简单的四则运算编译器(修订版)
    手把手带你入门前端工程化——超详细教程
    手把手教你搭建 Vue 服务端渲染项目
    前端项目自动化部署——超详细教程(Jenkins、Github Actions)
    前端国际化辅助工具——自动替换中文并翻译
    深入了解 webpack 模块加载原理
    实现一个 webpack loader 和 webpack plugin
    博客本地编辑器-OpenLiveWriter安装使用
  • 原文地址:https://www.cnblogs.com/lunatic-talent/p/12798955.html
Copyright © 2011-2022 走看看