Nguồn đề bài: http://www.spoj.com/PTIT/problems/P142PROC/
Nội dung bài viết
1. Đề bài P142PROC spoj
Tèo đang học cách chơi cờ với một bàn cờ kích thước 8×8. Cậu ấy đang học cách đi của quân xe, tượng và vua.
+ Quân tượng đi theo đường chéo, tùy ý số lượng ô.
+ Quân xe thì đi theo chiều dọc hoặc ngang, cũng tùy ý số lượng ô.
+ Quân vua thì đ itheo được 8 hướng nhưng mỗi lần chỉ đi được 1 ô.
Và tất cả quân này khi gặp vật cản hay cạnh bàn cờ thì đều không đi được tiếp.
Tèo đang thắc mắc, với mỗi quân cờ tượng, xe, vua thì sẽ mất ít nhất bao nhiều bước để di chuyển giữa 2 ô cho trước.
Input
Gồm một dòng duy nhất gồm 4 số nguyên là tọa độ của 2 ô cờ r1,c1, r2, c2 (1<=r1,c1,r2,c2<=8).
Output
Gồm 3 số nguyên lần lượt là số bước đi ít nhất của quân xe, tượng, vua. Trường hợp nào không đi được thì in ra số 0.
Example
Test 1:
Input:
4 3 1 6
Output:
2 1 3
Test 2:
Input:
5 5 5 6
Output:
1 0 1
2. Gợi ý P142PROC spoj PTIT
– Dựa vào công thức đường chéo chính, đường chéo phụ và áp dụng công thức tính khoảng các 2 tọa độ,… ta có thể dễ dàng tính được bài này
3. Code tham khảo P142PROC spoj PTIT
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | #include <iostream> #include <cmath> #include <cstdio> #include <algorithm> using namespace std; int a , b , c , d ; int xe() { if( a ==c || b==d ) return 1 ; return 2 ; } int tuong() { if ( a - b == c - d ) return 1; if(a + b == c+ d) return 1 ; if ( (a+b) % 2 == (c+d) %2 ) return 2 ; return 0 ; } int vua() { return max( abs(a-c) , abs(b -d) ) ; } int main() { cin>>a>>b>>c>>d ; cout<<xe()<<" " <<tuong() <<" " << vua() <<endl ; return 0; } |
Bài viết liên quan
- P146PROG spoj PTIT – Cuộc thi ăn socola
- P145PROD spoj PTIT – Diện tích hình tròn
- P141SUMB spoj PTIT – ROUND 1B – Hoán vị
- P134SUMF spoj PTIT – SUM4 F – Sàng nguyên tố
- P132SUMD spoj PTIT – SUM2 D – Thực hiện phép tính
- P131SUMH spoj PTIT – SUM1 H – KANGUROO
- GOODFRIE spoj PTIT – Good friends
- BCPOW spoj PTIT – Lũy thừa
- Giải đề ACM PTIT round 3 2015
- Ước chung lớn nhất, bội chung nhỏ nhất (Cơ bản)