PDA

View Full Version : bài toán trăm trâu



nh0cbilly
24-01-2009, 23:48
đề
Tram trau tram co
Trau dung an nam
Trau nam an ba
Trau gia an mot

Tức là 5X+3Y+Z=100. tìm X,Y,Z.



#include <stdio.h>
#include <conio.h>
main()
{
clrscr();
int i,dung,nam,gia;
long int dem=0;
for(dung=1;dung<100;dung++)
{
for(nam=1;nam<100;nam++)
{
for(gia =1;gia<100;gia++)
if((dung*5+nam*3+gia)==100)
printf("\ntrau dung: %d; trau nam: %d; trau gia: %d",dung,nam,gia);
} dem++;

}
printf("\n co %d dap an",dem);
getch();
}


Cho em hỏi tại sao đáp án cứ ra là 99 dù em đếm ko đủ ?

k66473
24-01-2009, 23:55
trâu đứng ăn năm
trâu nằm ăn ba
lụ khụ trâu già
ba con ăn một bó

bải phải thêm điều kiện x+y+z=100 nữa chứ nhỉ

thuonghcm
25-01-2009, 05:00
minh nhjhi con câu : trau già 3 con một bó mà!/
chính là (z mod 3=0)

huysun
25-01-2009, 09:35
#include <stdio.h>
#include <conio.h>
main()
{
int dung,nam,gia;
int dem=0;
for(dung=1;dung<98;dung++)
{
for(nam=1;nam<99 - dung;nam++)
{
gia=100 - dung - nam;
if( ((dung*5+nam*3+gia/3)==100) && (gia % 3=0))
printf("\n trau dung:",dung,", trau nam:",nam,", trau gia:",gia);
} dem++;

}
printf("\n co",dem," dap an");
getch();
}

[=========> Bổ sung bài viết <=========]


minh nhjhi con câu : trau già 3 con một bó mà!/
chính là (z mod 3=0)

trong C có mod ư? mới thấy lần đầu.

nh0cbilly
25-01-2009, 21:52
bộ máy anh chưa làm bài toán này à :D

squall86
26-01-2009, 22:01
trong câu lệnh for
thì đứng, nằm, già nhận giá trị từ 0

Hok bik zì
26-01-2009, 23:01
#include <stdio.h>
#include <conio.h>
main()
{
int dung,nam,gia;
int dem=0;
for(dung=1;dung<98;dung++)
{
for(nam=1;nam<99 - dung;nam++)
{
gia=100 - dung - nam;
if( ((dung*5+nam*3+gia/3)==100) && (gia % 3=0))
printf("\n trau dung:",dung,", trau nam:",nam,", trau gia:",gia);
} dem++;

}
printf("\n co",dem," dap an");
getch();
}

[=========> Bổ sung bài viết <=========]



trong C có mod ư? mới thấy lần đầu.


#define mod % lol

huysun
28-01-2009, 20:37
trong câu lệnh for
thì đứng, nằm, già nhận giá trị từ 0

từ 1, thậm chí già là từ 3, vì có ít nhất 1 con

ptaminh
04-02-2009, 16:04
đề
Tram trau tram co
Trau dung an nam
Trau nam an ba
Trau gia an mot

Tức là 5X+3Y+Z=100. tìm X,Y,Z.



#include <stdio.h>
#include <conio.h>
main()
{
clrscr();
int i,dung,nam,gia;
long int dem=0;
for(dung=1;dung<100;dung++)
{
for(nam=1;nam<100;nam++)
{
for(gia =1;gia<100;gia++)
if((dung*5+nam*3+gia)==100)
printf("\ntrau dung: %d; trau nam: %d; trau gia: %d",dung,nam,gia);
} dem++;

}
printf("\n co %d dap an",dem);
getch();
}


Cho em hỏi tại sao đáp án cứ ra là 99 dù em đếm ko đủ ?

NGhe bài này rồi giờ đọc sao mà thấy ko hiểu lắm

Phương trình thế này phải không nhỉ

5X + 3Y + Z = 100
X + Y + Z = 100

trừ 2 phương trình cho nhau tự nhiên được 4X + 2Y = 0;

Thế này vì X với Y là không thể âm => X = Y = 0; => Z = 100

vậy còn gì để giải nữa nhỉ ?.

kidteam
08-02-2009, 07:29
bạn ơi bài này đâu phải như vậy
nếu là bài toán trăm trâu thì là thế này mà
Trăm trâu ăn trăm bó cỏ
Trâu đứng ăn 5
Trâu nằm ăn 3
Lụ khụ trâu già
Ba con 1 bó mà
++++++++++++++++++++++++++++++++++
bài giải như sau


#include <stdio.h>
#include <conio.h>
#include <string.h>
int main(void)
{
int d,n,g;
int dem;
dem=0;
printf("Bai toan tram trau\n");
printf("Ngo HUng Cuong\n");
for(d=0;d<=20;++d)
{
for(n=0;n<=33;++n)
{
for(g=0;g<=99;g+=3)
if((d+n+g)==100&&(5*d+3*n+g/3)==100)
{
++dem;
printf("nghiem thu %i cua bai toan %i %i %i\n",dem,d,n,g);
}
}
}
printf("Press any key");
getch();
}

+++++++++++++++++++++++++++++++++++++++++++++
còn bài của bạn hình như sai thì phải
nếu trâu già ăn 1 thì chỉ có nghiệm duy nhất là 0 0 100 thôi
với lại bạn phải tăng biến đếm ở trong vòng lặp thứ 3 ở trong cả lệnh if
tức là chỉ khi là nghiệm thì mới đếm thôi chứ ở đây mỗi lượt của vòng for
for(dung=1;dung<100;dung++)
thì bạn lại tăng biến đếm lên 1 thì chẳng phải sẽ ra 99 nghiệm sao

ptaminh
09-02-2009, 09:51
thế này thì còn có chút ý nghĩa cho cuộc đời.

kethamtien8x
10-01-2010, 15:29
cac cau giai sai het roi`
co 3 dap so co ma a=4,b=18,c=78
a=8,b=11,c=81
a=12,b=4,c=84
ok men!

hoangnamquan
10-01-2010, 16:53
bài này phải là 3 trâu jà ăn một cơ
học từ lâu rùi mà

tronguyen
19-10-2010, 10:41
cac cau giai sai het roi`
co 3 dap so co ma a=4,b=18,c=78
a=8,b=11,c=81
a=12,b=4,c=84
ok men!

Đúng như thế! Vì các bạn kia quên đi điều kiện là "3 trâu già ăn 1" tức là số trâu già phải chia hết cho 3! Hay nói cách khác số cỏ cũng phải đúng 100 (không có lẻ)...

hoangnhan90
31-10-2010, 19:14
bài giải của tớ nè !!!

#include <stdio.h>
#include <conio.h>

void main()
{
int tdung, tnam, tgia, dem=0, i,j,k;
for(i=1,j=1,k=1;i*5<=100,j*3<=100,k/3<=100;i++,j++,k++);
for(tdung=1;tdung<=i;tdung++)
for(tnam=1;tnam<=j;tnam++)
for(tgia=1;tgia<+k;tgia++)
if( ((tdung*5)+(tnam*3)+(tgia/3))==100 && (tgia%3==0)
&& (tdung)+(tnam)+(tgia)==100)
{ printf("%d %d %d",tdung,tnam,tgia);
printf("\n");dem++;}
printf("tong cac phuong an: %d",dem);
getch();
}

kingnand
31-10-2010, 20:24
Nếu đề bài chủ topic đưa ra không nhầm (1 con trâu già ăn 1 bó) thì chỉ có 1 nghiệm 0 0 100 thôi.
Nếu theo đúng bài toán trăm trâu trăm cỏ thì code của chủ topic sai rùi.
Tại sao mọi người phải dùng 3 vòng lặp cho tăng thời gian tính toán nhỉ, chuyển 1 phương trình 2 ẩn và 1 phương trình 3 ẩn thì sẽ giảm đi rất nhiều chi phí thực hiện, cụ thể ta có 2 PT: 7x + 4y = 100 và z = 100 -x -y. Mình cho y: 0 to 14 và z: 0 to 25 => z và kiểm tra 3 <= z < 100.
Đây là ý tưởng giải thuật của mình, có gì sai mong được góp ý.

minh180688
31-10-2010, 22:09
đứng:X nằm:Y già:Z
X+Y+Z=100;
5X+3Y+Z/3=100;
chứ mấy ông lại tính là 5X+3Y+Z=100 thì đúng là vô đối

ambixilin
02-11-2010, 19:21
cau ou vi bo dem lay tu so 0 cho len 100 thi dem den 99 thoi
ca 0 nua la du ma
dau phai la tong dau

zero_teo
23-11-2010, 00:08
// tram trau tram co
trau dung an nam
trau nam an ba
lu khu trau gia
ba con mot bo
#include "stdio.h"
#include "conio.h"

void main ()
{
int tdung,tnam,tgia,phuongan= 0;
clrscr ();
for (tdung=1;tdung<=96;tdung++)
for (tnam=1;tnam<96;tnam++)
for (tgia=3;tgia<95;tgia++)
if (5*tdung + 3*tnam + tgia/3 == 100 && tgia%3==0 && tdung+tnam+tgia==100)
{
printf ("\ntrau dung %2d con, trau nam %2d con, trau gia %d con.\n",
tdung,tnam,tgia);
phuongan++;
}
printf ("co %d phuong an tim trau.",phuongan);
getch ();

}

criscooper
06-12-2010, 19:35
Vì trâu đứng ăn 5 cho nên tối đa sẽ là 20 con. => đứng <=20
tương tự với trâu già và trâu nằm




#include<stdio.h>
#include<conio.h>
main()
{
int dung,nam,gia;
for(dung=0;dung<=20;dung++)// Nếu không chấp nhận đáp án bằng 0 thì dung=1
for(nam=0;nam<40;nam++)//tương tự nằm =1
for(gia=0;gia<=100;gia++) //gia=1
if(dung+nam+gia==100 && dung*15+nam*9+gia==300)
{
printf("%d %d %d\n",dung,nam,gia);
}
getch();
}