Піраміда з символів

Вася хоче надрукувати на принтері піраміду з якогось символу висотою h. Напишіть програму, яка допоможе йому у цьому, не забуваючи, що програма повинна бути "економічнои вигідною", тобто друкувати найменшу кількість символів.
Приклади пірамід наведено у прикладах вхідних та вихідних даних. Для кращого унаочнення пропуски, що друкуються, замінено на крапки.
Вхідні дані
У єдиному рядку задано спочатку символ, при допомозі якого повинна друкуватись піраміда, а потім через пропуск і натуральне число, яке задає висоту піраміди h (h  50).
Вихідні дані
У першому рядку виведіть загальну кількість надрукованих "друкованих" символів а нижче саму піраміду.


Вхідні дані
Sample 1
A 3
 
 
 
 
Sample 2
M 9
 
 
 
 
 
 
 
 
 
Вихідні дані
Sample 1
12
..A
.AAA
AAAAA
 
Sample 2
117
........M
.......MMM
......MMMMM
.....MMMMMMM
....MMMMMMMMM
...MMMMMMMMMMM
..MMMMMMMMMMMMM
.MMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMM



program nwyrevtree;
label 1;
var s,n,k,k1,m1,a,l,i,j,ozn,max : integer;
m : string;
procedure ialinka(s1,l : integer; k : string);
var i : integer;
begin
for i:=1 to s1 do write(k);
end;
BEGIN
readln(m);
n:=length(m);
if m[n-1]=' ' then
val(m[n],max,ozn) else begin
val(m[n-1],max,ozn);
max:=max*10;
val(m[n],m1,ozn);
max:=max+m1;
end;
m:=m[1];
k:=1;
s:=0;
l:=max;
k1:=1;
a:=max-1;
for i:=1 to max do begin
s:=s+l;
l:=l+1;
end;
writeln(s);
for i:=1 to max do begin
  for j:=1 to a do
  write(' ');
  ialinka(k,k1,m);
  for j:=1 to a do
  write(' ');
  k:=k+2;
  a:=a-1;
  writeln;
  if a<0 then goto 1;
end;

1 : END.

Немає коментарів:

Дописати коментар