Gửi bài giải
Điểm:
1,00 (OI)
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
512M
Input:
stdin
Output:
stdout
Tác giả:
Dạng bài
Ngôn ngữ cho phép
Python, Scratch
Bác Tư là một người thợ lát gạch nổi tiếng. Một hôm, bác nhận được đơn đặt hàng đặc biệt từ trường học trong làng: lát một sân chơi hình vuông thật đẹp để các em học sinh có chỗ vui chơi.
Bác Tư này ra một ý tưởng độc đáo: lát gạch thành từng lớp hình vuông đồng tâm - lớp ngoài to, rồi lớp nhỏ dần vào giữa, và cứ cách một lớp thì đổi màu. Để tạo điểm nhấn, bác quyết định bắt đầu từ lớp ngoài cùng là gạch màu xanh, rồi xen kẽ với gạch trắng, cứ thể vào đến lớp trung tâm. Sân chơi được chia thành những ô vuông nhỏ bằng nhau, tạo thành một hình vuông lớn có kích thước ~N \times N~, trong đó ~N~ là số lẻ để có thể lát đến đúng ô trung tâm.

Yêu cầu: Biết rằng bác Tư đã lát gạch theo đúng ý tưởng như trên (như hình vẽ), em hãy giúp bác:
- Tính số ô được lát bằng gạch màu.
- Tính số ô còn lại là gạch trắng.
Input
- Một số nguyên lẻ ~N~ ~(3 ≤ N ≤ 10^8)~.
Output
- Một dòng gồm hai số là số ô gạch trắng và số ô gạch màu.
Sample Input 1
3
Sample Output 1
1 8
Note
- Với ~N = 3~ số ô gạch trắng là ~1~, số ô gạch màu là ~8~.

Sample Input 2
9
Sample Output 2
32 49
Note
- Với ~N = 9~ số ô gạch trắng là ~32~, số ô gạch màu là ~49~.

Bình luận
Code python ngắn nhưng không đúng hết:
N = int(input()) k = (N + 1) // 2
evenlayers = (k + 1) // 2 oddlayers = k // 2
firsteven = N - 1 lasteven = N - 1 - 4 * (evenlayers - 1) sumeven = evenlayers * (firsteven + lasteven) // 2 mau = 4 * sumeven
firstodd = N - 3 lastodd = N - 3 - 4 * (oddlayers - 1) sumodd = oddlayers * (firstodd + lastodd) // 2 trang = 4 * sumodd
if N % 4 == 1: mau += 1 else: trang += 1
print(trang, mau)
Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.
Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.