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)
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
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.
Powered by vBulletin® Version 4.2.0 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.