Solutions of Eating mushroom - MarisaOJ: Marisa Online Judge

Solutions of Eating mushroom

Select solution language

Write solution here.


User Avatar thmanhyd    Created at    2 likes

# Nhắc nhở ## Khuyến khích mọi người nên tự tìm hiểu, suy nghĩ lời giải trước khi tham khảo ## Nên đọc kỹ hướng dẫn trước khi tham khảo bài làm ___________________________________________________________________________________________________________________ ***Vì trong bài toán, n là một số từ 2 đến 8 (tương ứng từ thứ Hai đến Chủ Nhật), nhưng để dễ dàng tính toán, ta chuyển về hệ chỉ số từ 0 đến 6:*** _n bắt đầu từ thứ Hai sẽ có giá trị n = 1 (tương ứng với thứ Hai). n bắt đầu từ Chủ Nhật sẽ có giá trị n = 7 (tương ứng với Chủ Nhật). m cũng được giảm đi 1 vì chúng ta đang tính toán với số ngày bắt đầu từ ngày đầu tiên. _ ``` n--; m--; ``` (n + m) / 7: Chia tổng số ngày (tính từ ngày bắt đầu đến ngày kết thúc) cho 7 để xác định số tuần hoàn chỉnh trong khoảng thời gian đó. Mỗi tuần có 7 ngày. Mỗi tuần, Marisa không ăn nấm vào 2 ngày: thứ Bảy và Chủ Nhật, tức là trong mỗi tuần có 2 ngày không ăn nấm. Do đó, r ban đầu được tính là số tuần hoàn chỉnh trong n + m ngày, nhân với 2 để tính số ngày không ăn nấm trong các tuần đó. ``` int r = (n + m) / 7 * 2; ``` (n + m) % 7 == 6: Kiểm tra nếu phần dư của (n + m) chia cho 7 bằng 6. Điều này có nghĩa là trong phần dư của số ngày, sẽ có một ngày Chủ Nhật. Nếu có Chủ Nhật (ngày không ăn nấm), ta sẽ cộng thêm 1 vào r để loại trừ ngày Chủ Nhật này khỏi số ngày ăn nấm. ``` if ((n + m) % 7 == 6) r++; ``` Nếu n == 7 (ngày bắt đầu là Chủ Nhật), thì ta giảm r đi 1, vì trong tuần đó Marisa sẽ không ăn nấm vào Chủ Nhật, tức là phần tính ban đầu có thể tính thêm một ngày Chủ Nhật nữa mà không cần thiết. Do đó, ta giảm r đi 1. ``` if (n == 7) r--; ``` m - r + 1: Đây là số ngày mà Marisa ăn nấm trong khoảng thời gian m ngày bắt đầu từ ngày n. ``` cout << m - r + 1; ``` **Code Minh Họa :** ```#include <bits/stdc++.h> using namespace std; int n,m; int main() { ios_base::sync_with_stdio(false); cin.tie(0);cout.tie(0); cin>>n>>m; n--; m--; //int k=m-n; int r=(n+m)/7*2; if((n+m)%7==6) r++; if(n==7) r--; cout<<m-r+1; return 0; } ```