ROTATION spoj – Quay bánh xe

Nguồn đề bài: http://vn.spoj.com/problems/ROTATION/

1. Đề bài ROTATION spoj

Nông dân John có một cái máy gặt đập cũ, máy này yêu cầu một số dây curoa được đặt trên các bánh xe khác nhau để quay các bộ phận. Động cơ sẽ làm quay bánh xe 1 theo chiều kim đồng hồ, bánh xe 1 lại được gắn kèm 1 dây curoa với bánh xe 2. Bánh xe 2 lại được gắn kèm 1 dây curoa với bánh xe 3 , v.v.. và cứ như vậy có tổng cộng N (1 <= N <= 1,000) bánh xe (và N-1 dây curoa).

Hình ở trên minh họa 2 cách đặt dây curoa giữa 2 bánh xe. Trong hình minh họa, dây curoa của bánh xe 1 đã trực tiếp làm bánh xe 2 chuyển động và quay cùng chiều với bánh xe 1 (gọi là dây curoa thẳng – straight belt). Bánh xe 3 quay kéo theo bánh xe 4 cũng quay nhờ vào dây curoa chéo (crossed belt) khiến cho bánh xe 4 chuyển động ngược chiều so với bánh xe 3 => Đảo ngược chiều chuyển động.

Cho danh sách các dạng của curoa nối các bánh xe với nhau. Biết rằng bánh xe 1 được động cơ quay theo chiều kim đồng hồ. Hãy xác định chiều quay của bánh xe N. Mỗi dây curoa được mô tả bởi 3 số nguyên:

  • S_i — bánh xe tác động (nguồn)
  • D_i — bánh xe bị tác động (đích)
  • C_i — dạng của dây curoa (0=dây thẳng, 1=dây chéo)

Thật không may, FJ lại đưa ra danh sách các dây curoa theo 1 thứ tự ngẫu nhiên.

Dưới đây là 1 ví dụ với N=4, bánh xe 1 quay theo chiều kim đồng hồ.

Dây curoa thẳng được nối tới bánh xe 2 và 3 bởi vậy mà chúng cũng chuyển động cùng chiều kim đồng hồ. Còn lại dây curoa chéo đảo ngược chuyển động vì vậy bánh xe 4 (bánh xe N) chuyển động ngược chiều kim đồng hồ.

DỮ LIỆU

  • Dòng 1: Một số nguyên duy nhất: N
  • Dòng 2..N: Mỗi dòng mô tả 1 dây curoa với 3 số nguyên: S_i, D_i, và C_i

KẾT QUẢ

  • Dòng 1: Một số nguyên duy nhất là chiều quay của bánh xe N. (0=cùng chiều kim đồng hồ, 1=ngược chiều kim đồng hồ)

VÍ DỤ

Dữ liệu
4
2 3 0
3 4 1
1 2 0

Kết quả
1

2. Hướng dẫn ROTATION spoj

Bài này khá đơn giản 😀 chỉ cần tổng tất cả C_i 😀 và nếu tổng C_i chia hết cho 2 thì kết quả là 0, ngược lại là 1. đơn giản vậy thôi 😀 cái S_i D_i là lừa tình thôi, bạn ko cần quan tâm đến nó 😀

3. code tham khảo ROTATION spoj

a. Code pascal

program bt;
const   fi='';
var
        f:text;
procedure docfile;
var     x:word;
        kq:longint;
begin
        assign(f,fi); reset(f);
        readln(f,x); kq:=0;
        while not eoln(f) do
                begin
                        readln(f,x,x,x);
                        inc(kq,x);
                end;
        close(f);

        if kq mod 2=0 then
        	writeln(0)
        else
        	writeln(1);
end;

begin
        docfile;
end.

b. code c++

//#include <iostream>
#include <stdio.h>
using namespace std;

int main()
{
	int N;
	scanf("%d",&N);
	int i,x,y,z,s;
	s=0;
	for (i=2; i<=N; i++)
    {
        scanf("%d %d %d",&x,&y,&z);
        s=s+z;
    }

    if (s%2==0) printf("0");
    else
        printf("1");

    return 0;
}

 

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *