Anonymous user
Largest int from concatenated ints: Difference between revisions
Largest int from concatenated ints (view source)
Revision as of 05:56, 22 October 2014
, 9 years ago→{{header|Pascal}}
({{out}}) |
|||
Line 730:
=={{header|Pascal}}==
tested with freepascal.Used a more extreme example 2.
===algorithm 3===
<lang pascal>const
base = 10;
MaxDigitCnt = 11;
source1 : array[0..7] of integer = (1, 34, 3, 98, 9, 76, 45, 4);
source2 : array[0..3] of integer = (
type
tdata = record
datOrg,
datMod : LongWord;
datOrgDigitCnt,
datHighestDigit : Word;
datStrOrg : string[MaxDigitCnt];
end;
tArrData = array of tData;
procedure
begin
with n do
begin
//InttoStr is very fast
str(datOrg,datStrOrg);
Begin▼
end▼
▲ end;
end;
Line 768 ⟶ 761:
begin
n.datOrg := data;
end;
Line 786 ⟶ 779:
end;
procedure
var
cnt,
i,k : integer;
begin
For cnt := High(ArrData) downto Low(ArrData) do
Line 796 ⟶ 789:
datMod := datOrg;
i := newlen-datOrgDigitCnt;
k := 1;
while i > 0 do
begin
datMod := datMod *Base+
inc(k);
IF k >datOrgDigitCnt then
k := 1;
dec(i);
end;
Line 828 ⟶ 825:
procedure ArrDataOutput(const ArrData:tArrData);
var
i,l : integer;
s : string;
begin
{ the easy way
For i := High(ArrData) downto Low(ArrData) do
write(ArrData[i].
writeln;
*}
For i := High(ArrData) downto Low(ArrData) do
setlength(s,l);
l:= 1;
For i := High(ArrData) downto Low(ArrData) do
with ArrData[i] do
move(datStrOrg[1],s[l],datOrgDigitCnt);
inc(l,datOrgDigitCnt);
▲ end;
writeln(s);
end;
procedure HighestInt(var ArrData:tArrData);
begin
SortArrData(ArrData);
ArrDataOutput(ArrData);
Line 864 ⟶ 871:
{{out}}
<pre>998764543431
60545454546540</pre>
=={{header|PARI/GP}}==
|