Nguồn đề bài: http://www.spoj.com/PTIT/problems/PTIT126E/
1. Đề bài PTIT126E spoj
Có một số người tham gia trong một cuộc bầu cử, lá phiếu của mỗi người được ghi lại với kí hiệu như sau:
– Y nghĩa là đồng ý.
– N nghĩa là không đồng ý.
– P nghĩa là có mặt, nhưng không bỏ phiếu.
– A nghĩa là vắng mặt.
Nhiệm vụ của bạn là từ danh sách trạng thái này, xác định kết quả của cuộc bầu cử : Nếu ít nhất một nửa số người vắng mặt, in ra “need quorum”. Ngược lại, cuộc bầu cử được tính. Nếu số người đồng ý lớn hơn số người không đồng ý, in ra “yes”. Nếu số người không đồng ý lớn hơn số người đồng ý, in ra ‘’no’’. Nếu số người đồng ý bằng số người không đồng ý, in ra ‘tie’.
Input
– Gồm nhiều bộ test, mỗi bộ test là 1 dòng chứa danh sách trạng thái của một số người tham gia cuộc bầu cử. (2 <= Số người <= 70)
– Bộ test kết thúc bởi dòng chứa dấu ‘#’
Output
– Mỗi bộ test in trên 1 dòng chứa kết quả của cuộc bầu cử.
Example
Input:
YNNAPYYNY
YAYAYAYA
PYPPNNYA
YNNAA
NYAAA
#
Output:
yes
need quorum
tie
no
need quorum
2. Lời giải PTIT126E spoj PTIT – Bỏ phiếu
– Bài này chủ yếu rèn luyện về câu điều kiện, biến đếm, tư duy hiểu đề và các đọc file với số lần không biết trước.
– Các bạn chỉ cần đếm số phiếu Y, N, P, A rồi so sánh theo yêu cầu đề bài là được.
3. Code tham khảo PTIT126E spoj PTIT – Bỏ phiếu
const fi=''; type data=integer; var f:text; s:string; procedure xuli; var i:data; Y,N,P,A,tmp:data; begin y:=0; n:=0; p:=0; a:=0; for i:=1 to length(s) do begin if s[i]='Y' then inc(y) else if s[i]='N' then inc(n) else if s[i]='P' then inc(p) else inc(a); end; tmp:=n+y+p; if tmp<=a then writeln('need quorum') else if y>n then writeln('yes') else if n>y then writeln('no') else if n=y then writeln('tie'); end; procedure docfile; var i:data; begin assign(f,fi); reset(f); repeat readln(f,s); if s='#' then begin close(f); exit; end; xuli; until FALSE; end; begin docfile; end.