Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
6 / 5 / 1
Регистрация: 23.04.2020
Сообщений: 3

Задача про бесконечный квадрат и числа в нем

02.11.2020, 01:52. Показов 4428. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Бесконечную таблицу, строки и столбцы которой пронумерованы целыми числами начиная с 1 сверху вниз и слева направо, заполняют целыми числами 1, 2, 3 и т.д. Числа выписываются в соседние клетки по границам квадратов увеличивающегося размера (см. рисунок).
Дано число n, определите номер строки и номер столбца, в котором окажется это число.


Входные данные

Программа получает на вход одно целое число n, 1 ≤ n ≤ 1018.

Выходные данные

Программа должна вывести два целых числа: номер строки и номер столбца, в которых находится число n в этой таблице. Запись выводимых чисел должна содержать только цифры, вывод действительных чисел в ответе считается неверным.


Написал вроде красивый, простенький код на пайтоне, а он работает только до чисел 10**29 где то, ну можете максимум до 10**30, не понимаю почему, ведь принцип одинаковый для всех чисел используется.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import math
n = int(input('n = '))
 
i = math.ceil(n**0.5) #находим корень из этого числа округленный в большую сторону. Это значит, что число будет однозначно находиться либо в строке с таким номером либо в столбце с таким номером, либо и в строке и в столбце с таким номером
 
center = i**2-i+1 #находим центральное число этого ряда и этого же столбца. К примеру у 4 ряда и 4 строки центральным будет число 13, у 3 - 7, у 2 - 2 и т.д
 
max_ch = i**2 #находим максимально возможное число в этом ряду и этой строке
min_ch = (i-1)**2+1 #находим минимально возможное число в этом ряду и этой строке
 
if n>center: #если наше число меньше чем центральное, то 
    
    x1=max_ch-n+1 #находим вторую неизвестную координату вычитая из максимального числа в этой строке и столбце наше число и прибавляя в нему единицу
    
    x2=i
 
else: #а если же наше число не меньше чем центральное, то
    
    x1=i
    
    x2=n-min_ch+1 #находим вторую неизвестную координату вычитая из нашего числа минимальное число в этой строке или столбце и прибавляя к нему единицу
 
if i%2==0: #проверяем i на четность, если оно четное, то номером строки будет являться второе неизвестное, а номером столбца первое
    print(x2,x1)
 
else: #иначе же все будет наоборот
    print(x1,x2)
подскажите, пожалуйста, где я мог ошибиться.
Миниатюры
Задача про бесконечный квадрат и числа в нем  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.11.2020, 01:52
Ответы с готовыми решениями:

Задача про Квадрат
Периметр квадрата равен Z(м). Вывести на экран сообщение, превышает ли площадь квадрата заданную величину Q(м2). Большое спасибо

Задача про квадрат
В квадрат со стороной L бросаются наудачу независимо друг от друга 2 квадрата со стороной l<L/2. Стороны всех квадратов параллельны....

Сложная задача про полный квадрат
Есть 9 разных чисел a,b,c,d,e,f,g,h,i. Сумма любых двух разных чисел из данного ряда является полным квадратом. При этом a+b+c=d+e+f=g+h+i...

3
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
02.11.2020, 10:38
А вы уверены в правильности формулы?
То есть, если я правильно понял, до 1e29 выдаёт правильный результат, а потом, внизапна, неправильный?
0
6 / 5 / 1
Регистрация: 23.04.2020
Сообщений: 3
02.11.2020, 17:15  [ТС]
да, я поглядел, формула вроде верная. Ошибка в выведении корня из числа функцией math.ceil(n). Почему-то при больших числах она начинает ошибаться и выдавать неправильный результат. Скорее всего тут стоит использовать функцию с википедии по выведению целого квадратного корня из большого числа.
0
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
02.11.2020, 18:00
Цитата Сообщение от I_Am_IronMan Посмотреть сообщение
Ошибка в выведении корня из числа функцией math.ceil(n).
Но функция ceil не берёт корень.
Попробуйте math.sqrt.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.11.2020, 18:00
Помогаю со студенческими работами здесь

Сложная задача про полный квадрат
Есть 9 разных чисел a,b,c,d,e,f,g,h,i. Сумма любых двух разных чисел из данного ряда является полным квадратом. При этом a+b+c=d+e+f=g+h+i...

Задача про квадрат. Тема методы
"Косой" квадрат. У квадрата ABCD на плоскости известны координаты двух противоположных вершин - точек А и С. Найти координаты точек В и D. ...

Сложная задача про полный квадрат
Есть 9 разных чисел a,b,c,d,e,f,g,h,i. Сумма любых двух разных чисел из данного ряда является полным квадратом. При этом a+b+c=d+e+f=g+h+i...

Геометрическая задача про треугольник и точку в нём
Требуется доказать, что сумма расстояний от произвольной точки внутри остроугольного треугольника до его вершин больше либо равна удвоенной...

Нарисовать квадрат, в нем круг, в круге квадрат, и так далее
Здравствуйте. Требуется помощь. Нужно нарисовать рисунок. Квадрат, в нем круг, в этом круге квадрат, в этом квадрате круг.....и так пока...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru