def integerSqrt(n):
if n < 2:
return n
else:
smallCandidate = integerSqrt(n >> 2) << 1
largeCandidate = smallCandidate + 1
if largeCandidate*largeCandidate > n:
return smallCandidate
else:
return largeCandidate
n = int(input())
m = integerSqrt(n - 1)
k = (m * (m + 1) + 1)
if m % 2 == 1 :
if k < n :
row = m + 1
col = (m + 1) - (n - k)
elif k == n :
row = m + 1
col = m + 1
else :
col = m + 1
row = (m + 1) + (n - k)
else :
if k < n :
col = m + 1
row = (m + 1) - (n - k)
elif k == n :
row = m + 1
col = m + 1
else :
row = m + 1
col = (m+1)+(n-k)
print(row, col)
Объяснение:
puthon3
Поделитесь своими знаниями, ответьте на вопрос:
Дан двумерный массив размером n*n. сформировать: а) одномерный массив из элементов заданного массива, расположенных над главной диагональю; б) одномерный массив из элементов заданного массива, расположенных под главной диагональю; в) одномерный массив из элементов заданного массива, расположенных над побочной диагональю; г) одномерный массив из элементов заданного массива, расположенных под побочной диагональю. мне нужно сделать в)
Var
ma:array[1..n,1..n] of integer;
ar:array[1..n*n] of integer;
i,j,k:integer;
begin
randomize;
writeln('Matrix:');
for i:=1 to n do
begin
for j:=1 to n do
begin
ma[i,j]:=random(5);
write(ma[i,j]:4);
end;
writeln;
end;
writeln('Result:');
for i:=1 to n-1 do
for j:=1 to n-i do
begin
inc(k);
ar[k]:=ma[i,j];
end;
for i:=1 to k do
write(ar[i]:4);
end.