Submission

Status:

PPPPPPPPPP

Subtask/Task Score:

100/100

Score: 100

User: chokun

Problemset: เลขดวง

Language: cpp

Time: 0.002 second

Submitted On: 2026-10-06 15:06:46

#include <bits/stdc++.h>
using namespace std;

int main() {
    int total_days;   // จำนวนวันในเดือนเกิด
    int start_day;    // วันที่ 1 ของเดือนตรงกับวันลำดับที่เท่าใด (1-7)
    int target_day;   // วันที่เกิด

    cin >> total_days >> start_day >> target_day;

    // จำลองตารางปฏิทินขนาด 6 แถว x 7 คอลัมน์ (เริ่มต้นช่องด้วย 0 ทั้งหมด)
    vector<vector<int>> calendar(6, vector<int>(7, 0));

    // กำหนดพิกัดเริ่มต้น (แถวที่ 0, คอลัมน์ที่สอดคล้องกับสตาร์ทเดย์)
    // ในคอมพิวเตอร์ ดัชนีคอลัมน์เริ่มที่ 0-6 (ดังนั้นลำดับวันต้องลบด้วย 1)
    int r = 0;
    int c = start_day - 1;

    int target_r = -1, target_c = -1;

    // ใส่ข้อมูลวันที่ลงในปฏิทิน
    for (int day = 1; day <= total_days; day++) {
        calendar[r][c] = day;

        // บันทึกตำแหน่งของวันที่เกิด
        if (day == target_day) {
            target_r = r;
            target_c = c;
        }

        c++; // เลื่อนไปวันถัดไปในสัปดาห์
        if (c > 6) { // ถ้ายกยอดเกินวันเสาร์ ให้ขึ้นแถวสัปดาห์ใหม่
            c = 0;
            r++;
        }
    }

    int sum_lucky = 0;

    // ตรวจสอบทิศด้านบน (Row เหนือขึ้นไป 1 บรรทัด)
    if (target_r - 1 >= 0 && calendar[target_r - 1][target_c] != 0) {
        sum_lucky += calendar[target_r - 1][target_c];
    }

    // ตรวจสอบทิศด้านล่าง (Row ถัดลงมา 1 บรรทัด)
    if (target_r + 1 < 6 && calendar[target_r + 1][target_c] != 0) {
        sum_lucky += calendar[target_r + 1][target_c];
    }

    // ตรวจสอบทิศด้านซ้าย (Column ถอยหลัง 1 ช่อง)
    if (target_c - 1 >= 0 && calendar[target_r][target_c - 1] != 0) {
        sum_lucky += calendar[target_r][target_c - 1];
    }

    // ตรวจสอบทิศด้านขวา (Column ถัดไป 1 ช่อง)
    if (target_c + 1 < 7 && calendar[target_r][target_c + 1] != 0) {
        sum_lucky += calendar[target_r][target_c + 1];
    }

    // แสดงผลลัพธ์เลขดวง
    cout << sum_lucky << endl;
}