Show the (decimal) value of a number of 1s appended with a 3, then squared: Difference between revisions

m
→‎{{header|PARI/GP}}: append =={{header|Pascal}}== string math
(Add CLU)
m (→‎{{header|PARI/GP}}: append =={{header|Pascal}}== string math)
Line 696:
1111113 1234572098769
11111113 123456832098769
</pre>
=={{header|Pascal}}==
==={{header|Free Pascal}}===
like [[Show_the_(decimal)_value_of_a_number_of_1s_appended_with_a_3,_then_squared#Phix|Phix]] using string
<lang pascal>
program OnesAppend3AndSquare;
const
MAX = 10;//37
 
procedure AddNumStrings(var s:Ansistring;const n:Ansistring;Offset:integer);
var
l,sum,carry : integer;
begin
l := length(n);
carry := 0;
repeat
sum := Ord(s[l+Offset])+Ord(n[l])-2*Ord('0')+carry;
If sum >= 10 then
begin
dec(sum,10);
carry := 1;
end
else
carry := 0;
s[l+Offset]:= chr(sum+Ord('0'));
dec(l)
until l <= 0;
//correct carry, never used for '3' but > '3' only once
while (Offset>0) AND(carry = 1) do
begin
sum := Ord(s[Offset])-Ord('0')+carry;
If sum >= 10 then
begin
dec(sum,10);
carry := 1;
end
else
carry := 0;
s[Offset]:= chr(sum+Ord('0'));
dec(Offset)
end;
end;
 
procedure OnesAppend3AndSquare(CntOfOnes:integer;var s:AnsiString);
var
fac : Ansistring;
i,l : integer;
begin
l := CntOfOnes+1;
setlength(fac,l);
FillChar(fac[1],l-1,'1');
fac[l]:= '3';
write(fac:MAX+1);
repeat
i := Ord(fac[l])-Ord('0');
if i > 0 then
repeat
AddNumStrings(s,fac,l);
dec(i)
until i<=0;
dec(l);
until l <=0;
end;
 
var
s : AnsiString;
i,j,l : integer;
Begin
For i := 0 to MAX do
begin
l := i+1;
inc(l,l);
setlength(s,l);
Fillchar(s[1],l,'0');
OnesAppend3AndSquare(i,s);
//remove leading '0'
j := 1;
while (j < l) AND (s[j] = '0') do
begin
s[j]:= ' ';
inc(j);
end;
writeln(s:2*MAX+2);
end;
end.</lang>
{{out|@TIO.RUN}}
<pre>
3 9
13 169
113 12769
1113 1238769
11113 123498769
111113 12346098769
1111113 1234572098769
11111113 123456832098769
111111113 12345679432098769
1111111113 1234567905432098769
11111111113 123456790165432098769
..37 '1'
11111111111111111111111111111111111113 123456790123456790123456790123456790165432098765432098765432098765432098769
</pre>
 
Anonymous user