PDA

View Full Version : Mot bai QHD tuong doi kho !!!



ldt116
08-02-2004, 08:34
Cho F(x) là số nhiều nhất các phần tử khi tách x thành tổng các số nguyên tố, mỗi số chỉ xuất hiện 1 lần, trừ một số có thể xuất hiện 2 lần
VD F(2) = 1 (vi 2 = 2)
F(7) = 3 (vi 7 = 2 + 2 +3)
Hay tinh F(x)

ldt116
22-02-2004, 14:06
Không ai giải được sao ??? Hay là dễ wá ?

minhlazy
22-02-2004, 15:08
Bài này cũng ko khó lắm đâu
Để lần khác tui post lên nha

msn
24-02-2004, 20:36
Hãy tính F1(x) là cách phân tích số x thành tổng các số nguyên tố mà mỗi số chỉ dùng một lần. Sau đó for thêm một vòng cho số nguyên tố xuất hiện 2 lần và tính F.

happydragon
08-03-2004, 22:15
ldt116 chạy thử chương trình này xem, góp ý nữa

uses crt;
const p:array[1..16] of integer=(2,3,5,7,11,13,17,19,23,29,31,37,41,43,47, 49);
n=16;m=100;
var f:array[0..m] of integer;

procedure xuly;
var sum,i,j:integer;
begin
sum:=0;
for i:=1 to m do f[i]:=-1;
f[0]:=0;
for i:=1 to n do
begin
for j:=sum downto 0 do
if f[j]<>-1 then
if f[j+p[i]]<f[j]+1 then f[j+p[i]]:=f[j]+1;
sum:=sum+p[i];
if sum>m then sum:=m;
end;
for i:=m downto 0 do
begin
for j:=1 to n do
if (p[j]<i) then
if f[i-p[j]]+1>f[i] then f[i]:=f[i-p[j]]+1;
end;
end;

begin
xuly;
for i:=2 to m do write(f[i],' ');
end.