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
Усложнённый вариант(всё работает исправно,при вводе больше или меньше 3 чисел выводится сообщение "Это не трёхзначное число!"):
var
i,a,d:integer;
s:string;
begin
writeln('Введите трёхзначное число ');
read(s);
d:=length(s);
if d<>3 then
write('Это не трёхзначное число!');
if d=3 then
if (s[1]=s[2])or(s[1]=s[3])or(s[2]=s[3]) then
write('Да')
else
write('Нет');
end.
Простой вариант(выводится ошибка если цифр больше или меньше трёх!):
var
i,a,d:integer;
s:string;
begin
writeln('Введите трёхзначное число ');
read(s);
if (s[1]=s[2])or(s[1]=s[3])or(s[2]=s[3]) then
write('Да')
else
write('Нет');
end.
Даю 2 варианта, так-как незнаю,проходили ли вы функцию "length" или нет.
Если нет,то препад заподозрит что вы списали откуда нибудь или вам кто-то подсказал.