Friday the Thirteenth

Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^

题目描写叙述

 Is Friday the 13th really an unusual event?

That is, does the 13th of the month land on a Friday less often than on any other day of the week? To answer this question, write a program that will compute the frequency that the 13th of each month lands on Sunday, Monday, Tuesday, Wednesday, Thursday, Friday,
and Saturday over a given period of N years. The time period to test will be from January 1, 1900 to December 31, 1900+N-1 for a given number of years, N. N is non-negative and will not exceed 400.

There are few facts you need to know before you can solve this problem:

  • January 1, 1900 was on a Monday.
  • Thirty days has September, April, June, and November, all the rest have 31 except for February which has 28 except in leap years when it has 29.
  • Every year evenly divisible by 4 is a leap year (1992 = 4*498 so 1992 will be a leap year, but the year 1990 is not a leap year)
  • The rule above does not hold for century years. Century years divisible by 400 are leap years, all other are not. Thus, the century years 1700, 1800, 1900 and 2100 are not leap years, but 2000 is a leap year.

Do not use any built-in date functions in your computer language.

Don't just precompute the answers, either, please.

PROGRAM NAME: friday

 

输入

there are several test cases, each have the following format: 

One line with the integer N.  

输出

For each input, there is an output correspond to it, each have the following format:

Seven space separated integers on one line. These integers represent the number of times the 13th falls on Saturday, Sunday, Monday, Tuesday, ..., Friday.

演示样例输入

20

演示样例输出

36 33 34 33 35 35 34
刷道存在感。。
题意 :问从1900年往后的n年里,每一个月的13号分布在星期1到7的情况。。这算哈希?反正暴力就能够了
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cctype>
#include <cmath>
#include <cstdlib>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <list>
#define ll long long
using namespace std;
const int INF=1<<27;
const int maxn=1010;
int n,num[8];
bool is_leap(int year)
{
if((year%4==0&&year%100!=0)||year%400==0)
return 1;
else
return 0;
}
void solve()
{
memset(num,0,sizeof(num));
int xx=1;
for(int year=1900;year<=1900+n-1;year++)
{
for(int month=1;month<=12;month++)
{
int tem;
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
tem=31;
else if(month==4||month==6||month==9||month==11)
tem=30;
else if(month==2&&is_leap(year))
tem=29;
else if(month==2&&!is_leap(year))
tem=28;
int tag=(xx+12)%7==0? 7:(xx+12)%7;
xx=(xx+tem)%7==0?7:(xx+tem)%7;
num[tag]++;
}
}
printf("%d %d",num[6],num[7]);
for(int i=1;i<=5;i++)
printf(" %d",num[i]);
puts("");
}
int main()
{
while(~scanf("%d",&n))
solve();
return 0;
}

最新文章

  1. python ide ---wing 注册机
  2. Ubuntu/Linux 下pdf阅读器Zathura(类vim操作)
  3. 【转】JavaScript 异步进化史
  4. C语言:函数处理结构体
  5. Nodejs进阶:基于express+multer的文件上传
  6. EBS安装过程报错,oracle.apps.fnd.txk.config.ProcessStateException: FileSys OS COMMAND Failed : Exit=2 See log for details.
  7. Android的Drawable缓存机制源码分析
  8. readDouble
  9. C - Fractal(3.4.1)
  10. 自定义基本java类-StdDraw.java
  11. 创建本地Ubuntu镜像
  12. keil c编译器错误与解决方法
  13. NPOI之使用EXCEL模板创建报表
  14. Ubuntu 12.04下安装ibus中文输入法
  15. ZooKeeper全面介绍
  16. 使用supervisor 进行进程管理时调整最大文件打开数
  17. Daily Life 01
  18. shell脚本颜色输出(实例未编辑)
  19. Tomcat异常:server Tomcat v9.09 Server at localhost failed to start
  20. Halcon算子学习

热门文章

  1. MVC的Filter应用小结
  2. Electron 调用系统Office软件
  3. 算法笔记_182:历届试题 核桃的数量(Java)
  4. Linux的网卡由eth0变成了eth1怎么办?
  5. [Python]网络爬虫(六):一个简单的百度贴吧的小爬虫
  6. 关于CodeFirst的使用教程
  7. Linux/shell命令的实际应用——查看Port占用 netstat
  8. 【svn】Centos搭建svn服务器环境
  9. Word基础总结
  10. Linux各主要发行版的包管理命令对照