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

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

19.01.2010, 05:30. Показов 5083. Ответов 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
64319 / 47615 / 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
64319 / 47615 / 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
64319 / 47615 / 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
Ответ Создать тему
Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru