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;
}