Anonymous user
Largest int from concatenated ints: Difference between revisions
Largest int from concatenated ints (view source)
Revision as of 06:13, 22 October 2014
, 9 years ago→{{header|Pascal}}
Line 730:
=={{header|Pascal}}==
tested with freepascal.Used a more extreme example
===algorithm 3===
<lang pascal>const
Line 736:
MaxDigitCnt = 11;
source1 : array[0..7] of integer = (1, 34, 3, 98, 9, 76, 45, 4);
source2 : array[0..3] of integer = (
source3 : array[0..3] of integer = (60, 54,545454546,0);
type
Line 742 ⟶ 743:
datOrg,
datMod : LongWord;
datStrOrg : string[MaxDigitCnt];
end;
Line 751 ⟶ 750:
begin
with n do
//InttoStr is very fast
str(datOrg,datStrOrg);
end;
Line 772 ⟶ 769:
for cnt := High(ArrData) downto Low(ArrData) do
begin
t := length(ArrData[cnt].
IF res < t then
res := t;
Line 779 ⟶ 776:
end;
procedure
var
cnt,
Line 788 ⟶ 785:
begin
datMod := datOrg;
i := newlen-
k := 1;
while i > 0 do
Line 794 ⟶ 791:
datMod := datMod *Base+Ord(datStrOrg[k])-Ord('0');
inc(k);
IF k >
k := 1;
dec(i);
Line 835 ⟶ 832:
l := 0;
For i := High(ArrData) downto Low(ArrData) do
inc(l,length(ArrData[i].
setlength(s,l);
l:= 1;
Line 841 ⟶ 838:
with ArrData[i] do
begin
move(datStrOrg[1],s[l],
inc(l,
end;
writeln(s);
Line 849 ⟶ 846:
procedure HighestInt(var ArrData:tArrData);
begin
SortArrData(ArrData);
ArrDataOutput(ArrData);
Line 867 ⟶ 864:
For i := low(tmpData) to high(tmpData) do
InsertData(tmpData[i],source2[i]);
HighestInt(tmpData);
// Source3
setlength(tmpData,length(source3));
For i := low(tmpData) to high(tmpData) do
InsertData(tmpData[i],source3[i]);
HighestInt(tmpData);
end.</lang>
{{out}}
<pre>998764543431
6054854654
60545454546540</pre>
|