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!
Giải dùm em bài toán Pascal
Bắt đầu bởi Gabriel, 12-03-2006 - 15:57
#1
Đã gửi 12-03-2006 - 15:57
----------------------------------------
"Ba trăm năm lẻ về sau
Ai người hiểu được chân tình của ta?"
#2
Đã gửi 12-03-2006 - 16:02
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 ?
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 ?
----------------------------------------
"Ba trăm năm lẻ về sau
Ai người hiểu được chân tình của ta?"
#3
Đã gửi 13-03-2006 - 12:48
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ế
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ế
#4
Đã gửi 20-03-2006 - 02:16
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);
}
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
Đã gửi 25-03-2006 - 09:09
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
Đã gửi 20-10-2006 - 11:25
hic, không phải java cũng chả phải C/C++ mà Pascal cũng không nố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ĩ.
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
Đã gửi 21-10-2006 - 22:13
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.
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.
1 người đang xem chủ đề
0 thành viên, 1 khách, 0 thành viên ẩn danh