急求解!PASCAL简单题目

来源:百度知道 编辑:UC知道 时间:2024/06/04 08:57:38
题一 数的计算(20分)
问题描述
我们要求找出具有下列性质数的个数(包含输入的自然数n):
先输入一个自然数n(n<=1000),然后对此自然数按照如下方法进行处理:
1. 不作任何处理;
2. 在它的左边加上一个自然数,但该自然数不能超过原数的一半;
3. 加上数后,继续按此规则进行处理,直到不能再加自然数为止.
样例: 输入: 6
满足条件的数为 6 (此部分不必输出)
16
26
126
36
136
输出: 6
题二 最大公约数和最小公倍数问题(20分)
问题描述
输入二个正整数x0,y0(2<=x0<100000,2<=y0<=1000000),求出满足下列条件的P,Q的个数
条件: 1.P,A是正整数
2.要求P,Q以x0为最大公约数,以y0为最小公倍数.
试求:满足条件的所有可能的两个正整数的个数.
样例
输入:x0=3 yo=60
输出:4
说明(不用输出)此时的 P Q 分别为:
3 60
15 12
12 15
60 3
所以:满足条件的所有可能的两个正整数的个数共4种.
题三 求先序排列(30分)
问题描述
给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,长度<=8)。
样例
输入:BADC BDCA
输出:ABCD
题四 装箱问题(30分)
问题描述
有一个箱子容量为V(正整数,0<=V<=20000),

1 我建议采用递归 核心代码如下
procedure work(a:longint;);
s,m,i:longint;
begin
writeln(a);
s:=a;
while (s div 10)>0 do
begin
s:=s div 10;
inc(m);
end;
if s div 2>0 then
for i:=1 to s do
work(i*exp(ln(10)*(m+1))+a);
end;

2.这道题,用最大公约数去div最小公倍数,然后分解质因数,根据质因数的数量可以用排列组合直接算出种数

3.一道很经典的递归题,网上可以直接搜到

4.动态规划
f[i,j]:={f[i-1,j],f[i-1,j-s[k]] k:=1 to n}

机比较卡,而且一次打4题比较麻烦
我邮箱ben19950704@163.com
发你的邮箱地址过来
我做完一题发一题

感觉都是挺基础的题,建议自己做一下,提供点思路~~
1、这个可以用递归,也可以搜索
2、分解质因数,然后排列组合
3、递归,非常经典的题
4、动态规划,0/1背包题型

1:var
a:array[1..1000] of longint;
i,j,n:longint;
begin
readln(n);
a[1]:=1; a[2]:=2;
for i:=3 to n do
a[i]:=1;
for i:=3 to n do
for j:=1 to i div 2 do
a[i]:=a[i]+a[j];
writeln(a[n]);
end.
2:var
p,q