Đến nội dung

Hình ảnh

Giải dùm em bài toán Pascal

- - - - -

  • Please log in to reply
Chủ đề này có 6 trả lời

#1
Gabriel

Gabriel

    Binh nhất

  • Thành viên
  • 41 Bài viết
Em vừa học xong câu lệnh For...to...do. Cô giáo cho bài:

"Trăm trâu trăm cỏ
Trâu đứng ăn nằm
Trâu nằm ăn ba
Lụ khụ trâu già
Ba con một bó"

Ai giúp dùm em cái ý tưởng hay hướng đi là được.

Thân!
"Chém cha cái kiếp "lính phòng không""
----------------------------------------
"Ba trăm năm lẻ về sau
Ai người hiểu được chân tình của ta?"

#2
Gabriel

Gabriel

    Binh nhất

  • Thành viên
  • 41 Bài viết
Gọi x: trâu đứng
y: trâu nằm
z: trâu già

Ta có:

1.) x+y+z=100 (1)
2.) x*5+y*3+z*1/3=100
<=>15x+9y+z=300 (2)

(2)-(1) = 14x+8y=200
<=> x = (200 - 8y)/14

Hướng đi thì em tìm ra được như thế nhưng không hiểu làm sao lồng vô FOR ?
"Chém cha cái kiếp "lính phòng không""
----------------------------------------
"Ba trăm năm lẻ về sau
Ai người hiểu được chân tình của ta?"

#3
Oni

Oni

    Lính mới

  • Thành viên
  • 1 Bài viết
x, y, z thuộc N.
x + y < 100
x + z < 100
y + z < 100
x chia hết cho 5
y chia hết cho 3

Từ phương trình x = (200 - 8y)/14 bạn có thể tìm ra x, từ đó => y và z, chọn kết quả phù hợp.

Mình chỉ biết bên AS không rành Pascal nên chỉ có thể giúp bạn như thế :D

#4
toanhoc

toanhoc

    Trung sĩ

  • Thành viên
  • 196 Bài viết
Giai bang tin hoc thi vet can
int dung, nam, gia;
for dung:=0 to 100 do
for nam:=0 to 100-dung do
{
gia:=100-dung-nam;
if (dung*5+nam*3+gia/3=100) then
halt(0);
}

#5
smalteagle

smalteagle

    Hạ sĩ

  • Thành viên
  • 56 Bài viết
Chương trình của bạn toanhoc viết bằng ngôn ngữ gì vậy ? Không giống C cũng chẳng giống Pascal. Có phải là Java kô ? Hĩ.

#6
taynguyennt

taynguyennt

    Lính mới

  • Thành viên
  • 3 Bài viết

Chương trình của bạn toanhoc viết bằng ngôn ngữ gì vậy ? Không giống C cũng chẳng giống Pascal. Có phải là Java kô ? Hĩ.

hic, không phải java cũng chả phải C/C++ mà Pascal cũng không nốt!
theo mình, bài toán này phân tích như sau:

Trâu đứng ăn 5 => số cỏ ăn là 5k => số trâu đứng <=20 (thực ra là bé hơn chứ không bằng)
Trâu nằm ăn 3 => số cỏ ăn được là 3l => số trâu nằm <=33
Trâu già = 100-trâu đứng - trâu nằm.

vậy mình có thuật giải như sau:

for i from 1 to 20 do
for j from 1 to 33 do
begin
k:=100-i-j;
if 5*i + 3*j + k/3 = 100 then write ('Trâu đứng: ',i,' Trâu nằm ',j,' Trâu già ',k);
end;

Hic, lâu quá không viết = pascal nên có sai kú fáp thì mong bỏ wa dzùm.
Taynguyennt

#7
pntruongan

pntruongan

    Thượng sĩ

  • Thành viên
  • 263 Bài viết
Bài này cũng đâu khó đâu, cho x chạy từ 1 -> 100
Với mỗi x cho y chạy từ 1-> 100-x
Tính ra z rồi kiểm tra với điều kiện 5*x+3*y+1/3*z=100 đúng thì lấy, không tình liệng đi.
Nếu phân tích kỹ thì có thể giới hạn lại cận trên nhưng nếu lười thì để như trên cũng chả sao.




0 người đang xem chủ đề

0 thành viên, 0 khách, 0 thành viên ẩn danh