求宁波市第20届初中计算机程序设计解答,快!

来源:百度知道 编辑:UC知道 时间:2024/07/08 10:07:37
编程高手都来帮下忙,能解出越多越好啊
初中1:数的计数(30分)
(源程序名:cz1.pas,可执行文件名:cz1.exe)
(输入文件名:cz1.in,输出文件名:cz1.out)
[问题描述]
数字三角形:下图给出了一个数字三角形.请编一个程序计算从顶至底的某处的一条路径,使得该路径对于路径规定如下:
(1)每一步可沿左斜线向下走或右斜线向下走; ⑦
(2)1<三角形的行数<=100; ③ 8
(3)三角形中的数字为整数0,1,...,99; ⑧ 1 0
本题输入文件共包含n+1行,其中第一行是一个整数, 2 ⑦ 4 4
即三角形的行数n的值,接下来的n行,分别表示各行的整 4 ⑤ 2 6 5
数(同一行中的数据采用空格进行分隔)
输出文件共包含1行,内容是一个整数,即所经过的数字的最大总和。
[输入输出样例]
输入:
5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
输出:
30

初中2: N的连续数拆分(30分)
(源程序名:cz2.pas,可执行文件名:cz2.exe)
(输入文件名:cz2.in,输出文件名:cz2.out)
[问题描述]
所有的正整数均可以表示为一个、两个或者多个连续的正整数之和,给定一个不超过50000的正整数,求出它可以用几种不同的方法表示成连续正整数之和。如给出9,则有三种方法:9,4+5,2+3+4。(注:方案5+4视为与方案4+5是相同的)
输入文件共包含1行,即正整数n的值,且1≤n≤50000
输出文件也

program cz1;
var a:array[1..100,1..100]of integer;
n,i,j:integer;
begin
assign(input,'cz1.in');
reset(input);
assign(output,'cz1.out');
rewrite(output);
readln(n);
for i:=1 to n do
for j:=1 to i do
read(a[i,j]);
for i:=n-1 downto 1 do
for j:=1 to i do
if (a[i+1,j]>a[i+1,j+1]) then a[i,j]:=a[i+1,j]+a[i,j]
else a[i,j]:=a[i+1,j+1]+a[i,j];
writeln(a[1,1]);
close(input);
close(output);
end.

program cz2;
var n,s,i,t:integer;
begin
assign(input,'cz2.in');
reset(input);
assign(output,'cz2.out');
rewrite(output);
readln(n);
s:=0;
for i:=1 to 315 do
begin
t:=(i*(i+1))div 2;
if (t>n) then break;
if (n-t)mod i=0 then s:=s+1;
end;
writeln(s);
close(input);
close(output);
end.

program cz3;
var p,m,b:string;
len,i:integer;
p