free pascal题目两题1、拼数游戏对于给定的n个不小于0的整数,将它们以某种顺序连接成一排,组成一个最小的高精度整数(连成的高精度整数位数不超过255).例如:当n=3时,3个整数13、325和328,连

来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/17 19:50:01
freepascal题目两题1、拼数游戏对于给定的n个不小于0的整数,将它们以某种顺序连接成一排,组成一个最小的高精度整数(连成的高精度整数位数不超过255).例如:当n=3时,3个整数13、325和

free pascal题目两题1、拼数游戏对于给定的n个不小于0的整数,将它们以某种顺序连接成一排,组成一个最小的高精度整数(连成的高精度整数位数不超过255).例如:当n=3时,3个整数13、325和328,连
free pascal题目两题
1、拼数游戏
对于给定的n个不小于0的整数,将它们以某种顺序连接成一排,组成一个最小的高精度整数(连成的高精度整数位数不超过255).
例如:当n=3时,3个整数13、325和328,连成的最小整数为:13325328.当n=4时,4个整数7、13、0和246,连接成的最小整数为:132467.
输入:
第一行是一个整数n (1 ≤ n ≤1000),n是给定的整数数目.
接下来的n行,每行有一个整数,表示给定的n个不小于0的整数.
输出:
连成的最小的高精度整数.
样例:
输入(spell.in):
3
13
325
328
输出(spelll.out):
2、切橡皮泥游戏
聪明的小明有n块橡皮泥(只考虑长度,不考虑高与宽),现在想把这些橡皮泥块切割成k块长度相同的小橡皮泥条(原橡皮泥块可以有剩余),整数k是已知的.小明希望得到的橡皮泥条越长越好,请你设计一个程序帮助小明计算能够得到的小橡皮条的最大长度.
题目中的长度单位都是厘米.原橡皮泥块的长度都是正整数,切割得到的小橡皮泥条的长度也是正整数.
输入:
第一行是两个正整数n和k(1 ≤n ≤ 10000,1 ≤ k ≤ 10000),n是原橡皮泥的块数, k是需要得到的小橡皮泥条的数目.
接下来的n行,每行有一个1到10000之间的正整数,表示原n块橡皮泥每块的长度.
输出:
输出能够切割得到的小橡皮泥条的最大长度.如果得到的小橡皮泥条最大长度小于1厘米,则输出”0”.
样例:
输入(plas.in):
3 7
232
124
456
输出(plas.out):
114
第一题不用了
就第二题

free pascal题目两题1、拼数游戏对于给定的n个不小于0的整数,将它们以某种顺序连接成一排,组成一个最小的高精度整数(连成的高精度整数位数不超过255).例如:当n=3时,3个整数13、325和328,连
【算法分析】二分答案
(具体可以参见以下链接:http://wenku.baidu.com/link?url=DAeOnEekpXeMbhT1FWWWgWn7kL6zp8uTW8UZiBudJAB_HBZrzUo5S74GON8xFzR3eajZSZgrFbto8d80zjJARXqwmdZKKiLyW1J_BQOM98e)
算法复杂度O(nlogn)
【参考程序】
var n,k,l,r,mid:longint;
a:array[1..10000]of longint;
function ok(x:longint):boolean;
var i,j:longint;
begin
j:=0;
for i:=1 to n do
inc(j,a[i] div x);
if j>=k then
exit(true)
else exit(false);
end;
procedure init;
var i:longint;
begin
readln(n,k);
for i:=1 to n do
begin
readln(a[i]);
if a[i]>r then r:=a[i];
end;
end;
begin
init;
l:=1;mid:=(l+r)div 2;
if not(ok(1)) then
begin
writeln(0);
halt;
end;
repeat
mid:=(l+r)div 2;
if ok(mid) then
l:=mid+1
else r:=mid-1;
until l>r;
writeln(r);
end.
【评测结果】无.