[USACO 1.1.3] Friday the Thirteenth

原创 2011年11月20日 10:19:24

[题目描述]

Friday the Thirteenth
黑色星期五

13号又是星期五是一个不寻常的日子吗?13号在星期五比在其他日少吗?为了回答这个问题,写一个程序来计算在n年里13日落在星期一,星期二......星期日的次数.这个测试从1900年1月1日到1900+n-1年12月31日.n是一个非负数且不大于400.这里有一些你要知道的:

  • 1900年1月1日是星期一.
  • 4,6,11和9月有30天.其他月份除了2月有31天.闰年2月有29天,平年2月有28天.
  • 年份可以被4整除的为闰年(1992=4*498 所以 1992年是闰年,但是1990年不是闰年)
  • 以上规则不适合于世纪年.可以被400整除的世纪年为闰年,否则为平年.所以,1700,1800,1900和2100年是平年,而2000年是闰年.

请不要预先算好数据!

PROGRAM NAME: friday

INPUT FORMAT

一个整数n.

SAMPLE INPUT (file friday.in)

20

OUTPUT FORMAT

七个在一行且相分开的整数,它们代表13日是星期六,星期日,星期一.....星期五的次数.

SAMPLE OUTPUT (file friday.out)

36 33 34 33 35 35 34


[解题思路]

依旧是模拟,只需要注意闰年闰月的处理即可。


[Code]

{
ID: zane2951
PROG: friday
LANG: PASCAL
}

program friday;
const
   days:array[1..12] of longint=(31,28,31,30,31,30,31,31,30,31,30,31);

var
   ans:array[0..8] of longint;
   n,goal,year,mon,now,i,ce:longint;

//----------main-----------
begin
   assign(input,'friday.in'); reset(input);
   assign(output,'friday.out'); rewrite(output);
   readln(n); goal:=1900+n-1;
   year:=1900; now:=0;
   while year<=goal do
      begin
         mon:=1;
         while mon<=12 do
            begin
               ce:=days[mon];
               if year mod 100=0 then
                  begin
                     if (year mod 400=0) and (mon=2) then inc(ce);
                  end
               else if year mod 4=0 then if mon=2 then inc(ce);
               for i:=1 to ce do
                  begin
                     inc(now);
                     if now>7 then now:=1;
                     if i=13 then inc(ans[now]);
                  end;
               inc(mon);
            end;
         inc(year);
      end;
   for i:=6 to 7 do write(ans[i],'':1);
   for i:=1 to 4 do write(ans[i],'':1);
   writeln(ans[5]);
   close(input); close(output);
end.

黑色星期五

黑色星期五
  • qq_39692612
  • qq_39692612
  • 2017年09月01日 21:13
  • 100

今天居然是黑色星期五

上一次黑色星期五发生在去年的10月
  • matrix67
  • matrix67
  • 2007年04月13日 15:22
  • 297

洛谷 [USACO1.1]黑色星期五Friday the Thirteenth

hh
  • qq_36312502
  • qq_36312502
  • 2017年10月12日 18:55
  • 72

USACO section 1.1.3 黑色星期五

黑色星期五~ 题目大意:  从1900年1月1日开始,输入一个n,到1900+n-1年     12月31日,统计这些天中的 13 号 分别落星期几。。 解决方案:     ...
  • wikioi_bai
  • wikioi_bai
  • 2014年08月09日 22:47
  • 754

[USACO1.1]黑色星期五Friday the Thirteenth-洛谷 1202

题目描述13号又是一个星期五。13号在星期五比在其他日子少吗?为了回答这个问题,写一个程序,要求计算每个月的十三号落在周一到周日的次数。给出N年的一个周期,要求计算1900年1月1日至1900+N-1...
  • chenhongyi6
  • chenhongyi6
  • 2017年02月07日 19:58
  • 129

[USACO1.1]Black Friday

下次我宁可写灭菌计划/灭鼠计划也不写这种题了 /*One Night Of The Hunters*/ #include #include #include #include #include #i...
  • holyromanempire
  • holyromanempire
  • 2016年10月07日 23:17
  • 96

ytu 1403: 1.1.3 Friday the Thirteenth 黑色星期五

1403: 1.1.3 Friday the Thirteenth 黑色星期五 Time Limit: 1 Sec  Memory Limit: 64 MB Submit: 45  Solved:...
  • wzy_112099
  • wzy_112099
  • 2016年03月08日 08:42
  • 196

今天是不寻常的日子

2005年10月12日,对我来说是不寻常的一天。早上路过报摊,眼睛一瞥,惊闻“神六”正在发射,遂狂奔至实验室,看现场直播。正看时,又闻2005亚太市长峰会开幕式正在进行,遂想,今天真是好事连连啊!下午...
  • skyman_2001
  • skyman_2001
  • 2005年10月12日 22:49
  • 1617

黑色星期五

在西方,星期五和数字 13都代表着坏运气,两个不幸的个体最后结合成超级不幸的一天。所以,不管哪个月的十三日又恰逢星期五就叫“黑色星期五”。 要求:输入年份,输出是:判断该年是否包含黑色星期五,如包含...
  • xukun5137
  • xukun5137
  • 2015年07月19日 22:14
  • 469

Friday the Thirteenth(黑色星期五) USACO

原文地址 Is Friday the 13th really an unusual event? That is, does the 13th of the month land on...
  • bebabyron
  • bebabyron
  • 2013年04月14日 11:05
  • 1676
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[USACO 1.1.3] Friday the Thirteenth
举报原因:
原因补充:

(最多只允许输入30个字)