Diễn đàn tin học Nguyễn Văn Linh

The second house for every one
 
IndexTrợ giúpTìm kiếmThành viênĐăng kýĐăng Nhập

Share | 
 

 Bài này dễ nè. Đưa lên cho pà con xem.

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down 
Tác giảThông điệp
hoangtin14
Mèo con


Tổng số bài gửi : 96
Join date : 08/02/2010
Age : 21
Đến từ : Bình Định

Bài gửiTiêu đề: Bài này dễ nè. Đưa lên cho pà con xem.   Sat 13 Mar 2010, 17:50

Cho một số tự nhiên N. Tìm cách phân tích số N thành tổng của các số tự nhiên khác nhau sao cho tích của chúng là lớn nhất.
VD:
N=10
phân tích thành
2 3 5
Về Đầu Trang Go down
littlelee
Admin
Admin


Tổng số bài gửi : 415
Join date : 20/12/2009
Age : 21
Đến từ : Nghĩa địa

Bài gửiTiêu đề: Re: Bài này dễ nè. Đưa lên cho pà con xem.   Sun 14 Mar 2010, 21:36

Nếu n<=4 thì để nguyên. Nếu n>=5 thì làm như sau: gán i:=2;, vào vòng lặp điều kiện là n>0, gán n:=n-i; chọn số i; i:=i+1; rồi tiếp tục quay lên. Ra khỏi vòng lặp, n:=abs(n); nếu n=0 thì ko làm gì hết, nếu n<>0 thì loại số n ra khỏi các số đã chọn.
Về Đầu Trang Go down
hoangtin14
Mèo con


Tổng số bài gửi : 96
Join date : 08/02/2010
Age : 21
Đến từ : Bình Định

Bài gửiTiêu đề: Re: Bài này dễ nè. Đưa lên cho pà con xem.   Sun 14 Mar 2010, 21:40

Cách này tương tự cách mình làm.
Về Đầu Trang Go down
littlelee
Admin
Admin


Tổng số bài gửi : 415
Join date : 20/12/2009
Age : 21
Đến từ : Nghĩa địa

Bài gửiTiêu đề: Re: Bài này dễ nè. Đưa lên cho pà con xem.   Wed 17 Mar 2010, 14:59

Thì cách đơn giản nhất mà.
Về Đầu Trang Go down
administrators
Gà nhỏ


Tổng số bài gửi : 29
Join date : 15/03/2010

Bài gửiTiêu đề: Re: Bài này dễ nè. Đưa lên cho pà con xem.   Wed 17 Mar 2010, 16:33

Cống hiến chút đỉnh nà:

Bài này làm như thế này:

Nếu n>3 thì
+ đem n - 2
+ và xuất 2 ra
+ làm lại từ đầu
Ngược lại
+ xuất n.
+ kết thúc

Như vậy với n = 10 ta có cách phân tích như sau
10= 2+ 2+2 + 2 +2 +0 (số 0 cuối cùng ta bỏ đi, nếu để lại chết chắc Very Happy )
Tích là 32. lớn nhất.

Tuy nhiên như bạn thấy đấy 2+2 = 4, và 2*2=4. Như vậy ta có thể phân tích thành những con số 4 cũng được. Nhưng khi gặp con số 5 thì lại phân tích thành 3+2 (phiền phức).

Thôi thì cứ 2+2+.... cho xong vậy.
Về Đầu Trang Go down
littlelee
Admin
Admin


Tổng số bài gửi : 415
Join date : 20/12/2009
Age : 21
Đến từ : Nghĩa địa

Bài gửiTiêu đề: Re: Bài này dễ nè. Đưa lên cho pà con xem.   Wed 17 Mar 2010, 17:17

Uhm, ^^
Về Đầu Trang Go down
hoangtin14
Mèo con


Tổng số bài gửi : 96
Join date : 08/02/2010
Age : 21
Đến từ : Bình Định

Bài gửiTiêu đề: Re: Bài này dễ nè. Đưa lên cho pà con xem.   Wed 17 Mar 2010, 21:04

administrators với littlelee ơi. Đọc cho kĩ đề nha. Phân tích thành các số tự nhiên khác nhau mà. Sao phân tích thành 2 hết dc? Mình ko hỉu cho lắm. Có j sai thì cho mình bt nha.
Về Đầu Trang Go down
administrators
Gà nhỏ


Tổng số bài gửi : 29
Join date : 15/03/2010

Bài gửiTiêu đề: Re: Bài này dễ nè. Đưa lên cho pà con xem.   Wed 17 Mar 2010, 21:07

Thật hỗ thẹn vì đọc không kỹ đề. Sorry
Về Đầu Trang Go down
administrators
Gà nhỏ


Tổng số bài gửi : 29
Join date : 15/03/2010

Bài gửiTiêu đề: Re: Bài này dễ nè. Đưa lên cho pà con xem.   Wed 17 Mar 2010, 21:22

Vậy thì viết lại

i:=1;
while n<>0 do
begin
inc(i);
if n> i*2 then
begin
write(i);
n:=n-i;
end else
begin
write(n);
n:=0;
end;
end;
Về Đầu Trang Go down
hoangtin14
Mèo con


Tổng số bài gửi : 96
Join date : 08/02/2010
Age : 21
Đến từ : Bình Định

Bài gửiTiêu đề: Re: Bài này dễ nè. Đưa lên cho pà con xem.   Wed 17 Mar 2010, 21:26

không cần phải như thế đâu. bài toán này còn có tên gọi là bài toán rải đậu, các số dc phân tích ra là một dãy số liên tiếp từ 2 đến một số a sao cho tổng của chúng là số đầu tiên lớn hơn N. rồi trừ trong dãy đó ra một số để có tổng bằng N thì dãy sẽ có tích lớn nhất.
Ví dụ:
10
phân tích ra 2,3,4,5
Trừ 4 ra là bằng 10 sẽ có tích lớn nhất
2*3*5=30
Về Đầu Trang Go down
hoangtin14
Mèo con


Tổng số bài gửi : 96
Join date : 08/02/2010
Age : 21
Đến từ : Bình Định

Bài gửiTiêu đề: Re: Bài này dễ nè. Đưa lên cho pà con xem.   Wed 17 Mar 2010, 21:27

Đó là ý kiến riêng mình. Ko bt đúng ko. Nếu sai thì xin mọi người sửa chữa dùm Razz
Về Đầu Trang Go down
administrators
Gà nhỏ


Tổng số bài gửi : 29
Join date : 15/03/2010

Bài gửiTiêu đề: Re: Bài này dễ nè. Đưa lên cho pà con xem.   Wed 17 Mar 2010, 21:32

hoangtin14 đã viết:
không cần phải như thế đâu. bài toán này còn có tên gọi là bài toán rải đậu, các số dc phân tích ra là một dãy số liên tiếp từ 2 đến một số a sao cho tổng của chúng là số đầu tiên lớn hơn N. rồi trừ trong dãy đó ra một số để có tổng bằng N thì dãy sẽ có tích lớn nhất.
Ví dụ:
10
phân tích ra 2,3,4,5
Trừ 4 ra là bằng 10 sẽ có tích lớn nhất
2*3*5=30

Bạn nói đúng rồi. Và hoàn toàn trùng khớp với mấy dòng lệnh mình viết ở trên.
Về Đầu Trang Go down
Sponsored content




Bài gửiTiêu đề: Re: Bài này dễ nè. Đưa lên cho pà con xem.   Today at 18:54

Về Đầu Trang Go down
 
Bài này dễ nè. Đưa lên cho pà con xem.
Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang 
Trang 1 trong tổng số 1 trang

Permissions in this forum:Bạn không có quyền trả lời bài viết
Diễn đàn tin học Nguyễn Văn Linh :: Góc tin học :: Lớp chuyên tin-
Chuyển đến