困惑:PASCAL编程题

来源:百度知道 编辑:UC知道 时间:2024/05/11 15:10:52
1、百钱买百鸡:一只公鸡值5元,一只母鸡值3元,3只小鸡值1元。现在要求用100元买100只鸡,编程求出所有的购买方案。
2、如果一个数从左边读和从右边读都是同一个数,就是回文数。如果一个数只能被1和它自己相除,就称素数,编程求所有的既是回文数又是素数的三位数。
以上2题均要求用PASCAL做,写出程序。如果能附解释的话,追加积分。

1.因为数量少,直接穷举就可以了,如果数量大可以动态规划.
begin
for k:=0 to 300 do {穷举小鸡数,至多300}
if (k mod 3)=0 then {小鸡数必为3的倍数}
begin
for i:=0 to 20 do {穷举公鸡数,至多20}
for j:=0 to 33 do {穷举母鸡数,至多33}
if (i*5+j*3+(k div 3))=100 {判断总价值是否=100}
then writeln('gong:',i,' mu:',j,' xiao:',k);
end;
end.
2.依然是穷举法
begin
for i:=100 to 999 do {穷举数}
begin
if (i div 100)=(i mod 10) then {判断回文数}
begin {判断素数}
t:=1;
for j:=2 to (i div 2) do
if (i mod j)=0 then t:=0;
if t=1 then writeln(i);
end;
end;
end.