pascal 几道题

来源:百度知道 编辑:UC知道 时间:2024/09/20 20:00:15
联赛练习题目】自然数分解乘积

时间限制: 1000 ms 内存限制: 65536 KB
提交数: 50 通过数: 26

【题目描述】

给定一个大于1的自然数N,把N分解成若干个不同正整数之和,求分解得到的这些不同正整数乘积的最大值。即:N=X1+X2+X3+...+Xk,相应地有T=X1*X2*x3...*Xk。求T的最大值。

【输入】

一行,正整数N(小于200)

【输出】

一行,乘积最大值

【输入样例】

6

【输出样例】

8

【联赛练习题目】均分

时间限制: 1000 ms 内存限制: 65536 KB
提交数: 32 通过数: 27

【题目描述】

SSB(Ship, Submarine,Ballistic弹道导弹潜艇舰队)最近新引进了一批SSBN(Strategic Submarine Ballistic Nuclear 弹道导弹战略核潜艇),由于制造上存在着差异,每台潜艇的战力上也存在着巨大的差距。而你要将这些SSBN分给两个同样出色的海军上校,处于公平考虑,你要尽量使这个分配方案平均。那么,在分配前,你必须要计算出这些潜艇的分配方案中,最小的差距是多少。

【输入】

第一行是一个整数N(1<=n<=20),代表潜艇的总数。
第二行若干个正整数(小于109),代表潜艇的战力。

【输出】

仅一行,最小的差距

【输入样例】

6
32 34 2 43 7 10

【输出样例】

4

【联赛练习题目】旅行的精灵

时间限制: 1000 ms 内存限制: 65536 KB
提交数: 0 通过数: 0

第一题是模拟。先是2..k连续个数,使得2..k+1的和大于n,而1..k的和小于n,之后就是从后开始调整这些数,有点细节问题,详见程序.
Program myh;
Type
arr = array[0..100] of longint;
Var
i,j : longint;
a,b : longint;
n : longint;
x,y : arr;

Operator *(a:arr;b:longint) c:arr;
Var
i,j : longint;
Begin
Fillchar(c,sizeof(c),0);
For i:=1 to a[0] do
Begin
Inc(c[i],a[i]*b);
Inc(c[i+1],c[i] div 10);
c[i]:=c[i] mod 10;
End;
c[0]:=a[0];
If c[c[0]+1]>0 then Inc(c[0]);
While c[c[0]]>9 do
Begin
Inc(c[c[0]+1],c[c[0]] div 10);
c[c[0]]:=c[c[0]] mod 10;
Inc(c[0]);
End;
End;

Procedure Doit;
Var
i,j : longint;
c : longint;
Begin
a:=2;
b:=0;
While b+a<=n do