Программа

{$A-,B-,D-,E+,F-,I-,L-,N-,O-,R-,S-,V-}{$M 65520,0,655360}uses crt;constmaxk = 13; {Максимальное значение для k}typeinput = recordlast,next,new: word;end;vark,i,j,n,cn,half: word;m: array[1..1 shl maxk] of input;Procedure concat(a,b: word);var i,j,nj: word;begini:=a;while m[i].next<>n+1 do i:=m[i].next;j:=b; while m[j].next<>n+1 do j:=m[j].next;while j<>0 dobeginnj:=m[j].last; m[i].next:=j; m[j].last:=i; i:=j; j:=nj;end;m[i].next:=n+1;end;beginWrite('Enter k...');readln(k);n:=1 shl k; {Определение длины полоски}for i:=1 to n do{Начальные значения}with m[i] dobeginlast:=0;next:=n+1;new:=0;end;cn:=n;while cn>1 do {Сгибание полоски}beginhalf:=cn div 2;for i:=1 to half do concat(i,cn-i+1);cn:=half;end;j:=1;for i:=1 to n do {Нумерация клеток}beginm[j].new:=i; j:=m[j].next;end;for i:=1 to n do write(m[i].new:5);writeln;

end.

Попробуйте найти формулу и написать программу, которая без моделирования складывания полоски по номеру клетки выдавала бы ее номер.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: