ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

数字(number) (黑色星期五改编题)

2019-10-02 16:53:30  阅读:263  来源: 互联网

标签:int ans number a1 星期五 b1 400 include 改编


              数字(number)

   【题目背景】

    谔谔啊啊啊啊啊啊啊啊啊!!!

   【题目描述】

    今天(当我写下这行字)是公历2019 年9 月19  日,星期四。

    CKH 是一个迷信的女孩子,如果某个月的13 号是星期五,那她就会吓得大叫。

    如果一年中有x  个月份满足这个条件,她在这一年就会大叫x  次。

    现在她想问你一个问题,从A 年到B 年的这段时间里,她分别有多少年会大叫0

~ 12  次。

    由于某些众所周知的原因,1919 年是神创造世界的元年。所以我们从1919 年1 月

1  日开始计算。(这并不意味着这一天是星期一!)
                . . . . . . . . . . . . .

   【输入格式】

    从文件number.in  中读入数据。

                                                         9
    输入的第一行包含两个正整数A, B,保证1919 ≤ A  ≤ B ≤ 10  ,含义如上所述。

   【输出格式】

    输出到文件number.out  中。

    输出13 行,第i 行格式如下:

    i : x

    表示在这段时间内有x  年CKH 大叫了i 次。

   【样例1 输入】

    2019 2020

   【样例1 输出】

    0: 0

    1: 0

    2: 2

    3: 0

    4: 0

    5: 0

6: 0

    7: 0

    8: 0

    9: 0

    10: 0

    11: 0

    12: 0
【提示】

    如果某个年份(是400  的倍数) 或者(是4  的的倍数且不是100  的倍数)  ,这一年

的2 月有29 天。


显然每400年一循环,打表打出四百年的答案,看有多少个四百年,剩下的暴力处理就行了。

#include<iostream>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<cstdio>
using namespace std;
int ans[20],y[20],ss[20];
int a,b;
int main()
{
    y[1]=5,y[2]=1,y[3]=1,y[4]=4;
    y[5]=6,y[6]=2,y[7]=4,y[8]=0;
    y[9]=3,y[10]=5,y[11]=1,y[12]=3;//2001年每月13号在周几
   cin>>a>>b;
   int a1=a/400,b1=b/400;
   ans[1]+=171*(b1-a1),ans[2]=170*(b1-a1),ans[3]=59*(b1-a1);//统计400的个数
//每个闰年周数加2 平年周数加1
int c=0; a1=a%400; if(a1>=1) ans[2]--; for(int i=2002;i<=2000+a1-1;i++) { if(c==1) y[1]+=1,y[2]+=1,c=0; for(int j=1;j<=12;j++) y[j]+=1; if(i%400==0 || (i%4==0 && i%100!=0) ) { for(int j=3;j<=12;j++) y[j]+=1; c=1; } for(int j=1;j<=12;j++) y[j]%=7; int temp=0; for(int j=1;j<=12;j++) if(y[j]==4) temp++; ans[temp]--; } y[1]=5,y[2]=1,y[3]=1,y[4]=4; y[5]=6,y[6]=2,y[7]=4,y[8]=0; y[9]=3,y[10]=5,y[11]=1,y[12]=3; c=0; b1=b%400; if(b1>=1) ans[2]++; for(int i=2002;i<=2000+b1;i++) { if(c==1) y[1]+=1,y[2]+=1,c=0; for(int j=1;j<=12;j++) y[j]+=1; if(i%400==0 || (i%4==0 && i%100!=0) ) { for(int j=3;j<=12;j++) y[j]+=1; c=1; } for(int j=1;j<=12;j++) y[j]%=7; int temp=0; for(int j=1;j<=12;j++) if(y[j]==4) temp++; ans[temp]++; } if(a1==0) ans[1]++; for(int i=0;i<=12;i++) cout<<i<<": "<<ans[i]<<endl; return 0; }

 

标签:int,ans,number,a1,星期五,b1,400,include,改编
来源: https://www.cnblogs.com/hfang/p/11617743.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有