superman

聚精会神搞建设 一心一意谋发展
posts - 190, comments - 17, trackbacks - 0, articles - 0
   :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

Section 1.1 - Friday the Thirteenth

Posted on 2009-03-05 11:39 superman 阅读(147) 评论(0)  编辑 收藏 引用 所属分类: USACO
 1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 bool isLeapYear(int y)
 6 {
 7     return (y % 4 == 0 && y % 100 != 0|| y % 400 == 0;
 8 }
 9 
10 int theAmountOfDaysInTheMonth(int y, int m)
11 {
12     switch (m)
13     {
14         case 1 : case 3 : case 5 : case 7 : case 8 : case 10 : case 12 :
15             return 31;
16         case 4 : case 6 : case 9 : case 11 :
17             return 30;
18         case 2 :
19             return isLeapYear(y) ? 29 : 28;
20     }
21 }
22 
23 int main()
24 {
25     freopen("friday.in""r", stdin);
26     freopen("friday.out""w", stdout);
27 
28     int n;
29 
30     cin >> n;
31 
32     int y = 1900, m = 1, d = 1, dayOfWeek = 0, cnt[7= { 0 };
33     for (y = 1900; y <= 1900 + n - 1; y++)
34     {
35         for (m = 1; m <= 12; m++)
36             for (d = 1; d <= theAmountOfDaysInTheMonth(y, m); d++)
37             {
38                 if (d == 13)
39                     cnt[dayOfWeek]++;
40                 dayOfWeek = (dayOfWeek + 1% 7;
41             }
42     }
43 
44     cout << cnt[5<< ' ' << cnt[6<< ' '
45          << cnt[0<< ' ' << cnt[1<< ' '
46          << cnt[2<< ' ' << cnt[3<< ' '
47          << cnt[4<< endl;
48 
49     return 0;
50 }
51 

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理