iT邦幫忙

0

[一天至少一題直到ICPC開賽023]解題:Doom’s Day Algorithm(1/5)

  • 分享至 

  • xImage
  •  

Doom’s Day Algorithm

  • 最近剛接觸 CTF,結果發現一大堆東西沒學要一直補,導致現在都沒什麼時間發文
  • 不過題目還是會寫,文章也會繼續更新

DC群組
題目連結

屬於比較討厭的CPE 一星題,如果你沒有想到投機的寫法的話XD

解題

  1. 建表 ==> 星期一至日
  2. 建表==>題目給了好幾個用的星期一,去推剩下的最後建成表
  3. 去把輸入的日去減掉輸入月的對應表

大於 0 ==> %7 去對照星期表,得解
小於 0 ==> %7 + 7 去對照星期表,得解

code

#include <iostream>
#include <vector>
#include <cmath>
#include <algorithm>
#define Mo "Monday"
#define Tu "Tuesday"
#define We "Wednesday"
#define Th "Thursday"
#define Fr "Friday"
#define Sa "Saturday"
#define Su "Sunday"

/*
    解題: Doms Day Algorithm
    解題者:神里綾華的狗

    這次這樣亂搞(一堆定義)主要是防抄用
*/
using namespace std;

/*
    note :(all monday)

    4/4 ==>擬用
    6/6
    8/8
    10/10
    12/12
*/

// 建置表 ==> 每月的個星期一
const vector<int> Ever_Mon_Monday = {-1, 10, 21, 7, 4, 9, 6, 11, 8, 5, 10, 7, 12};
// 建置表 ==> 星期
const vector<string> day = {Mo, Tu, We, Th, Fr, Sa, Su};

int main(int argc, char const *argv[])
{
    int t;
    cin >> t;
    while (t--)
    {
        int m, d;
        cin >> m >> d;
        int key = d - Ever_Mon_Monday[m];
        key = key % 7;
        if (key >= 0)
        {
            cout << day[key] << endl;
        }
        else
        {
            key = 7 + key;
            cout << day[key] << endl;
        }
    }
    return 0;
}

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言