Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.96/25: Рейтинг темы: голосов - 25, средняя оценка - 4.96
 Аватар для Nobu_San
1 / 1 / 1
Регистрация: 04.12.2009
Сообщений: 33

Магический квадрат

19.01.2010, 05:30. Показов 5039. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Только вернулся со второго тура районной олимпиады где занял второе место, вот одна из задач. Решите кто сможет, буду очень благодарен

Пример

magic.in
3
magic.out
8 16
3 5 7 4
9 2
Задача Б. Магический квадрат
Имя входного файла: magi&.'in
Имя выходного файла: magic.out
Ограничение по времени: 2 секунды
Ограничение по памяти: 64 мегабайт
Магическим квадратом называется таблица из N строк и N столбцов, в которых написаны целые числа от 1 до 1000, и суммы чисел в каждой строке и в каждом столбце одинаковы. Все числа в магическом квадрате должны быть различны. Вам дано N, постройте любой магический квадрат N х N.
Формат входных данных
Входного файл содержит одно целое число N — размер магического квадрата (1 <= N <= 10).
Формат выходных данных
В выходной файл выведите найденный магический квадрат размера N: N строк по N чисел в каждой. Числа в строках должны быть разделены пробелами. В случае невозможности найти нужный квадрат выведите «No solution».
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.01.2010, 05:30
Ответы с готовыми решениями:

Магический квадрат
Дана матрица 3x3. Определить является ли матрица магическим квадратом. Кто может помочь решить ? Буду очень благодарен

Магический квадрат
дана целая квадратная матрица n-порядка. Определить, являеться ли она магическим квадратом, т.е. такой, в которой суммы элементов во...

Магический квадрат
Определить, является ли заданная целая квадратная матрица 9-го порядка магическим квадратом, т. е. такой, в которой суммы элементов во всех...

17
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
19.01.2010, 06:32
Ты спрашиваешь, или предлагаешь размяться? Во втором случае выложи свой вариант под cut-тегом.
0
2923 / 844 / 324
Регистрация: 30.04.2009
Сообщений: 2,633
19.01.2010, 06:47
пример то хоть нормально напиши а то я только на пример минут 5 смотрел и ничего понять не мог)))
0
 Аватар для Nobu_San
1 / 1 / 1
Регистрация: 04.12.2009
Сообщений: 33
19.01.2010, 12:41  [ТС]
предлагаю решить, пример как есть
0
175 / 172 / 40
Регистрация: 14.11.2009
Сообщений: 507
19.01.2010, 12:50
Цитата Сообщение от Nobu_San Посмотреть сообщение
предлагаю решить, пример как есть
ты сам смотрел чё там в примере написал?
0
 Аватар для Nobu_San
1 / 1 / 1
Регистрация: 04.12.2009
Сообщений: 33
19.01.2010, 12:58  [ТС]
какой мне пример дали я такой и пнаписал
0
175 / 172 / 40
Регистрация: 14.11.2009
Сообщений: 507
19.01.2010, 13:14
посмотри в первой строке 2 числа в второй 4 и в 3 2 ,какой это квадрат?
0
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
19.01.2010, 21:52
Так понял, там должно быть
magic.out
8 1 6
3 5 7
4 9 2
Pascal
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
const
  maxN = 10;
var
  a: array [0 .. maxN - 1, 0 .. maxN - 1] of Integer;
  n, hn, i, j, x, y: Integer;
  f: Text;
begin
  Assign(f, 'CON');
  Reset(f);
  ReadLn(f, n);
  Close(f);
  Assign(f, 'CON');
  Rewrite(f);
  if n = 2 then
  begin
    Write(f, 'No solution');
    Close(f);
    Halt(0);
  end;
  hn := n div 2;
  for i := 0 to n - 1 do
    for j := 0 to n - 1 do
    begin
      x := i + j - hn;
      y := i - j + hn;
      if x < 0 then
        inc(x, n)
      else if x >= n then
        dec(x, n);
      if y < 0 then
        inc(y, n)
      else if y >= n then
        dec(y, n);
      a[y][x] := i * n + j + 1;
    end;
  for y := 0 to n - 1 do
  begin
    for x := 0 to n - 1 do
      Write(f, a[y][x], ' ');
    WriteLn(f);
  end;
  Close(f);
end.
1
175 / 172 / 40
Регистрация: 14.11.2009
Сообщений: 507
19.01.2010, 21:59
Цитата Сообщение от Somebody Посмотреть сообщение
Так понял, там должно быть
magic.out
8 1 6
3 5 7
4 9 2
Pascal
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
const
  maxN = 10;
var
  a: array [0 .. maxN - 1, 0 .. maxN - 1] of Integer;
  n, hn, i, j, x, y: Integer;
  f: Text;
begin
  Assign(f, 'CON');
  Reset(f);
  ReadLn(f, n);
  Close(f);
  Assign(f, 'CON');
  Rewrite(f);
  if n = 2 then
  begin
    Write(f, 'No solution');
    Close(f);
    Halt(0);
  end;
  hn := n div 2;
  for i := 0 to n - 1 do
    for j := 0 to n - 1 do
    begin
      x := i + j - hn;
      y := i - j + hn;
      if x < 0 then
        inc(x, n)
      else if x >= n then
        dec(x, n);
      if y < 0 then
        inc(y, n)
      else if y >= n then
        dec(y, n);
      a[y][x] := i * n + j + 1;
    end;
  for y := 0 to n - 1 do
  begin
    for x := 0 to n - 1 do
      Write(f, a[y][x], ' ');
    WriteLn(f);
  end;
  Close(f);
end.

при n 10
51 0 62 0 73 0 84 0 95 0
0 61 0 72 0 83 0 94 0 60
70 0 71 0 82 0 93 0 59 0
0 80 0 81 0 92 0 58 0 69
79 0 90 0 91 0 57 0 68 0
0 89 0 100 0 56 0 67 0 78
88 0 99 0 55 0 66 0 77 0
0 98 0 54 0 65 0 76 0 87
97 0 53 0 64 0 75 0 86 0
0 52 0 63 0 74 0 85 0 96

но ведь не могут быть нули тем более сколько.
П.С. надо еше исправить не a[x][y] а a[x,y]
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
19.01.2010, 22:15
Somebody, Это только для нечетных?

Добавлено через 43 секунды
Цитата Сообщение от pikusfikus Посмотреть сообщение
надо еше исправить не a[x][y] а a[x,y]
А какая разница? Возьми да проверь.
0
175 / 172 / 40
Регистрация: 14.11.2009
Сообщений: 507
19.01.2010, 22:20
я проверил (но в abc) и выдало ошибку!
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
19.01.2010, 22:23
я проверил (но в abc) и выдало ошибку!
Выкинь это чудо.
0
175 / 172 / 40
Регистрация: 14.11.2009
Сообщений: 507
19.01.2010, 22:25
да я в нем редко сижу,просто иногда неудобно создавать текстовый файл сохранять и т.д,а удобно копипастом пользоваться )
0
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
19.01.2010, 23:11
Цитата Сообщение от Puporev Посмотреть сообщение
Somebody, Это только для нечетных?
Ага, как-то сразу не обратил внимания, просто вспомнил алгоритм этот. А с чётными намного хуже. Нашёл описания частных случаев для 4, для 6, в Вики есть алгоритм, но он сводится к другому алгоритму, есть какие-то варианты для 4n. Ещё книженция на английском про магические квадраты чётного порядка на 435 страниц. В общем, пока не знаю, как по-хорошему.
Цитата Сообщение от pikusfikus Посмотреть сообщение
П.С. надо еше исправить не a[x][y] а a[x,y]
a[x][y] тоже можно, тем более оно более привычно после C-подобных языков.
Ещё может возникнуть вопрос, почему первый индекс - y. Потому что это вполне естественный порядок - сначала по-вертикали, потом по-горизонтали.
Цитата Сообщение от pikusfikus Посмотреть сообщение
да я в нем редко сижу,просто иногда неудобно создавать текстовый файл сохранять и т.д,а удобно копипастом пользоваться )
У меня же даже Assign(f, 'CON') стоит, чтобы не мучиться.
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
20.01.2010, 07:09
Somebody, Это он про то, что в Паскаль АВС можно вставлять код сразу с форума, как в Делфи, без промежуточных манипуляций, как с Турбо Паскалем.
А алгоритмы для четных матриц действительно очень сложные. И меня удивит, если кто-то на олимпиаде придет и сразу их напишет.
0
 Аватар для Nobu_San
1 / 1 / 1
Регистрация: 04.12.2009
Сообщений: 33
20.01.2010, 07:47  [ТС]
спс всем
0
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
20.01.2010, 13:23
Цитата Сообщение от Puporev Посмотреть сообщение
Это он про то, что в Паскаль АВС можно вставлять код сразу с форума, как в Делфи, без промежуточных манипуляций, как с Турбо Паскалем.
Так а в Turbo вроде тоже без проблем, только AutoIndent надо отключить, чтобы не уезжало вправо.
0
20.01.2010, 14:49

Не по теме:

Цитата Сообщение от Somebody Посмотреть сообщение
Так а в Turbo вроде тоже без проблем
попробуй;)

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.01.2010, 14:49
Помогаю со студенческими работами здесь

магический квадрат
написать программу, использующую подпрограмму, которая проверяет, является ли введенная матрица магическим квадратом. Магическим квадратом...

Магический квадрат
Помогите, пожалуйста, решить задачу. Дана целая квадратная матрица n-го порядка. Определить является ли она магическим квадратом, т. е....

Магический квадрат
Нужно определить, является ли матрица NxN магическим квадратом. Как описать главную диагональ я знаю if i=j. А вот остальное не соображу....

Построить магический квадрат
Написать программу, которая позволяет построить магический квадрат любой четности при 10&lt;=n&lt;=5

Получить магический квадрат 3х3
Расстановка девяти чисел. В квадрате размером 3х3 клетки расставить числа 1, 2, 3, 4, 5, 6, 7, 8, 9 так, чтобы суммы чисел, стоящих в...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru