Піраміда з символів
Вася хоче надрукувати на принтері піраміду з якогось
символу висотою 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.
Немає коментарів:
Дописати коментар