zoukankan      html  css  js  c++  java
  • POJ 3393 Lucky and Good Months by Gregorian Calendar 模拟题

    题目:http://poj.org/problem?id=3393

    不多说了,简单模拟题,因为粗心写错了两个字母,导致错了N遍,模拟还是一贯的恶心,代码实在不想优化了,写的难看了点。。

     1 #include <stdio.h>
     2 #include <string.h>
     3 
     4 const int First = 0;
     5 const int Last = 1;
     6 
     7 int month[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
     8 int days[10010][13];
     9 int weekday[10010][13][2];
    10 
    11 int main()
    12 {
    13     for(int i = 1; i <= 10000; i++)
    14     {
    15         memcpy(days[i], month, sizeof(month));
    16         if( (i < 1582 && i % 4 == 0) ||
    17             (i > 1582 && (i % 4 == 0 && i % 100 != 0 || i % 400 == 0)))
    18         {
    19             days[i][2] = 29;
    20         }
    21     }
    22     days[1700][2] = 29;
    23     days[1752][9] -= 11;
    24     weekday[1][1][First] = 6;
    25     for(int i = 1; i <= 10000; i++)
    26     {
    27         for(int j = 1; j <= 12; j++)
    28         {
    29             weekday[i][j][Last] = (weekday[i][j][First] + days[i][j] - 1) % 7;
    30             if(j != 12)weekday[i][j+1][First] = (weekday[i][j][Last] + 1) % 7;
    31             else weekday[i+1][1][First] = (weekday[i][j][Last] + 1) % 7;
    32         }
    33     }
    34 
    35     int t, ys, ms, ye, me;
    36     scanf("%d", &t);
    37     while(t--)
    38     {
    39         scanf("%d %d %d %d", &ys, &ms, &ye, &me);
    40         int good = 0, lucky = 0;
    41         while(!(ys >= ye && ms >= me))
    42         {
    43             if(weekday[ys][ms][First] == 6 || weekday[ys][ms][First] <= 1)
    44                 good++;
    45             if(weekday[ys][ms][Last] == 0 || weekday[ys][ms][Last] >= 5)
    46                 lucky++;
    47             if(ms++ == 13)
    48             {
    49                 ys++;
    50                 ms = 1;
    51             }
    52         }
    53         if(weekday[ye][me][First] == 6 || weekday[ye][me][First] <= 1)
    54             good++;
    55         if(weekday[ye][me][Last] == 0 || weekday[ye][me][Last] >= 5)
    56             lucky++;
    57         printf("%d %d
    ", lucky, good);
    58     }
    59     return 0;
    60 }
    View Code
  • 相关阅读:
    多态
    java8的十大新特性
    Floyd最短路径算法
    ES6(六)函数扩展
    ES6(五)数组扩展
    ES6(四)数值扩展
    ES6(一)解构赋值
    store封装
    ipad方案
    pyinstaller编译打包为pyd
  • 原文地址:https://www.cnblogs.com/wolfred7464/p/3365605.html
Copyright © 2011-2022 走看看