$\color{red}{\fbox{Group 2}\bigstar\text{Topic thực hành}\bigstar} $

M

mikelhpdatke

Tiếp này, bài này mình tự dịch trên CF (Codeforces), mọi người đừng quăng bom nhá
Link gốc http://codeforces.com/contest/228/problem/A
Thanks anh hgminh95 vì cái đống bài tập này ;))



Thời gian chạy: 2s
Dung lượng bộ nhớ cho mỗi test: 256 Megabyte
Dữ liệu vào ra là xuất nhập bình thuờng.


Chú ngựa Valera muốn đi dự tiệc, nhưng những chiếc móng ngựa của chú thì có màu sắc khác nhau hoặc giống nhau (Màu sắc ngẫu nhiên nhập từ bàn phím nhé). Vì vậy Valera cần đi đến cửa hàng mua móng ngựa sao cho không khi thay móng ngựa xong không có chiếc nào màu giống nhau. May thay số tiền Valera vừa đủ để mua nhưng chú vẫn muốn mua sao cho tiết kiệm nhất.
Yêu cầu:

Hãy viết chương trình giúp Valera mua những chiếc móng ngựa sao cho số tiền phải trả là nhỏ nhất đủ để đạt yêu cầu trên


Dữ liệu nhập vào

4 số nguyên $S_1;S_2;S_3;S_4$ lần lượt là màu sắc của 4 chiếc móng ngựa $1\le S_1;S_2;S_3;S_4 \le 10^9$

Dữ liệu ra:
Một số nguyên duy nhất là số chiếc móng cần mua

VD:

Input
1 7 3 3

Output
1

Input
7 7 7 7

Output
3


 
N

nobita36

Em làm thế này các anh xem đúng chưa nhé:

568f2a08311deb6b265af12f568de445_49882854.20121010172318.jpg
 
N

nobita36

Đây ạ. :) Mọi người xem thử. Anh cho em tham gia học với nha. em xin vào nhóm 2
Mã:
program mongngua;
var i,j,dem,the:integer;
A:array[1..100] of integer;

begin
for i:=1 to 4 do
begin
write('nhap mau thu ',i,' :');
readln(A[i]);
end;
dem:=0;      the:=0;
for i:=1 to 3 do
begin
for j:=i+1 to 4 do
begin
If A[i]=A[j] then
begin
A[j]:=the;
dem:=dem+1;
the:=the-1;
end;
end;
end;
write(dem);
readln;
end.

From mikelhpdatke: Lần sau bạn cho vào tag code nhé :)
 
Last edited by a moderator:
M

mikelhpdatke

Đây ạ. :) Mọi người xem thử. Anh cho em tham gia học với nha. em xin vào nhóm 2
Mã:
program mongngua;
var i,j,dem,the:integer;
A:array[1..100] of integer;

begin
for i:=1 to 4 do
begin
write('nhap mau thu ',i,' :');
readln(A[i]);
end;
dem:=0;      the:=0;
for i:=1 to 3 do
begin
for j:=i+1 to 4 do
begin
If A[i]=A[j] then
begin
A[j]:=the;
dem:=dem+1;
the:=the-1;
end;
end;
end;
write(dem);
readln;
end.
From mikelhpdatke: Lần sau bạn cho vào tag code nhé :)
Bạn tự test một vài test là biết ngay mà :)

Bài bạn sai rồi :-?
ideone.com/Pd0Ui
 
1

11thanhkhoeo

Mã:
   if (a<> b) and (b<> c) and (c<> d) and  (d<>a) then k:=0
            else 
                 begin 
                      if (a=b) and (b=c) and (c=d) then k:=3
                           else 
                               begin 
                                     if (((a=b) and (b=c)) or  ((a=d) and (b=d)) or ((d=b) and (b=c)) or ((a=c) and (c=d))) then k:=2 else k:=1;
                              end;
                 end;

thế này nhỉ :))
 
V

vao_lop_10

Xin lỗi mọi người vì hội bắt đầu lâu mà em không biết, mà sao topic có vẻ vắng vậy
 
V

vao_lop_10

Câu 2: Kí tự dài nhất trong xâu
Nhập vào xâu s (a-z) in ra kí tự xuất hiện nhiều nhất trong xâu và số lần xuất hiện. Nếu có nhiều trường hợp thì in ra trường hợp đầu tiên
Mới làm xong bài này trưởng nhóm ơi, mọi ngươi góp ý !
Mã:
USES crt;
VAR st:STRING;  
i,j,max:INTEGER;
a,kytu: CHAR; 
b: ARRAY[97..122] OF BYTE;
BEGIN
    clrscr;
    write('Nhap xau (a-z): '); readln(st);
    FOR i:= 1 TO length(st) DO        
    BEGIN
    a:= st[i];
    FOR j:= 97 TO 122 DO
    IF ord(a) = j THEN b[j]:= b[j] + 1;
    IF (ord(a) < 97) OR (ord(a)>122) THEN halt;
    END;    
    max:= b[97];
    FOR i:= 98 TO 122 DO
    IF max < b[i] THEN 
    begin
        max:= b[i];   
        kytu:= chr(i);  
        END;
    write('Ky tu xuat hien nhieu nhat la ',kytu,', xuat hien ',max,' lan');
    readln
    END.
 
Last edited by a moderator:
V

vao_lop_10

Câu 5: Xóa kí tự trùng
Viết chương trình nhập vào 1 xâu và xóa hết các kí tự liên tiếp giống nhau trong xâu chỉ chừa lại một.
Mã:
USES crt;
VAR st,a:STRING;
i,dem: INTEGER;                  
BEGIN
    clrscr;
    write('Nhap chuoi: '); readln(st);  
    FOR i:= 1 TO length(st) DO
    IF st[i] <> st[i+1] THEN 
    BEGIN 
        a[dem]:= st[i]; 
        dem:= dem + 1; 
        END;
    write(st[1],a);
    readln
    END.
 
C

cuong276

Mới làm xong bài này trưởng nhóm ơi, mọi ngươi góp ý !
Mã:
USES crt;
VAR st:STRING;  
i,j,max:INTEGER;
a,kytu: CHAR; 
b: ARRAY[97..122] OF BYTE;
BEGIN
    clrscr;
    write('Nhap xau (a-z): '); readln(st);
    FOR i:= 1 TO length(st) DO        
    BEGIN
    a:= st[i];
    FOR j:= 97 TO 122 DO
    IF ord(a) = j THEN b[j]:= b[j] + 1;
    IF (ord(a) < 97) OR (ord(a)>122) THEN halt;
    END;    
    max:= b[97];
    FOR i:= 98 TO 122 DO
    IF max < b[i] THEN 
    begin
        max:= b[i];   
        kytu:= chr(i);  
        END;
    write('Ky tu xuat hien nhieu nhat la ',kytu,', xuat hien ',max,' lan');
    readln
    END.
Hướng thuật toán cảu bạn cũng đúng. Nhưng không cần thiết phải cho ra chr(i) như thế này.
Chỉ cần 1 vòng for kiểm tra là được.Nếu chữ cái nào có số lần nhiều nhất thì in nó ra
 
Top Bottom