Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
1 / 1 / 0
Регистрация: 16.05.2022
Сообщений: 19

Волшебный квадрат

12.09.2022, 11:19. Показов 1415. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Волшебный квадрат

На день рождения Егору подарили волшебный квадрат.

Волшебный квадрат — это таблица 3 × 3, в каждой из ячеек которой находятся числа от 0 до 9. Егор придумал следующую игру с волшебным квадратом: он загадывает число N и пытается так поставить числа в каждую ячейку квадрата, чтобы сумма чисел в каждой строке и каждом столбце была равна в точности N.

Пусть расстановка — это волшебный квадрат, заполненный числами. Тогда расстановки A и B считаются различными, если хотя бы для каких-то строки x и столбца y выполняется неравенство Ax, y ≠ Bx, y, где Ax, y и Bx, y — это числа, находящиеся в строке x и столбце y в расстановках A и B соответственно.

Егор задумался, сколько всего существует различных расстановок таких, что сумма в каждой строке и в каждом столбце была равна в точности N.

Напишите программу, которая поможет ответить на вопрос Егора.

Входные данные
Единственная строка входных данных содержит целое число N (0 ≤ N ≤ 109).

Выходные данные
Требуется вывести одно число — искомое количество расстановок.

Для тех, кто не хочет всё это читать, поясняю:
Есть квадрат 3x3, и в нем стоят числа от 0 до 9. Нужно вывести кол-во перестановок, чтобы сумма чисел в каждой строке и столбце была N

Пример:

Входные данные
0
Выходные данные
1
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.09.2022, 11:19
Ответы с готовыми решениями:

Волшебный мост
Крестьянин, возвращаясь с ярмарки, увидел на мосту странную картину. Какой-то человек сначала считал деньги в кошельке, затем бросал в реку...

Волшебный мост: неправильный формат вывода
Помогите. Компилятор пишет, что неправильный формат вывода. #include <iostream> using namespace std; int main () { int M,R,K; int...

Нарисовать квадрат с одинокой звёздочкой в центре. Весь квадрат орисовывается плюсиками
Нарисовать квадрат с одинокой звёздочкой в центре. Весь квадрат орисовывается плюсиками. Пользователь задаёт высоту и ширину.С++ Помогите...

10
 Аватар для programmer_08
687 / 444 / 209
Регистрация: 18.10.2020
Сообщений: 1,606
12.09.2022, 11:34
а как сумма этих чисел может превысить 81 хотя бы?
0
1 / 1 / 0
Регистрация: 16.05.2022
Сообщений: 19
12.09.2022, 11:38  [ТС]
Цитата Сообщение от programmer_08 Посмотреть сообщение
а как сумма этих чисел может превысить 81 хотя бы?
Ну как я понял, если число больше 81, то вывести 0, а если равно 81, то 1
0
236 / 166 / 51
Регистрация: 14.02.2022
Сообщений: 431
12.09.2022, 11:42
Цитата Сообщение от notle Посмотреть сообщение
Есть квадрат 3x3, и в нем стоят числа от 0 до 9.
Не понял. В квадрат можно поместить 9 чисел. А предлагается поместить 10 чисел от 0 до 9
Одно из чисел выбрасывается?
0
Заблокирован
12.09.2022, 11:42
Цитата Сообщение от notle Посмотреть сообщение
таблица 3 × 3
Цитата Сообщение от notle Посмотреть сообщение
сумма чисел в каждой строке и каждом столбце
откуда магическое число 81, а не 27?
0
1 / 1 / 0
Регистрация: 16.05.2022
Сообщений: 19
12.09.2022, 11:45  [ТС]
Ой, тьфу, какое 81, 27

Добавлено через 35 секунд
Цитата Сообщение от das1 Посмотреть сообщение
Не понял. В квадрат можно поместить 9 чисел. А предлагается поместить 10 чисел от 0 до 9
Одно из чисел выбрасывается?
Походу

Добавлено через 1 минуту
Хотя стоп, получается что нужно перебрать 27 вариантов. Ну чтож, пора писать 27 if'ов, если это так конечно)
0
236 / 166 / 51
Регистрация: 14.02.2022
Сообщений: 431
12.09.2022, 11:50
notle
ещё вопрос. Числа могут повторяться? То есть
вот этот квадрат
7 7 7
7 7 7
7 7 7
волшебный?
0
1 / 1 / 0
Регистрация: 16.05.2022
Сообщений: 19
12.09.2022, 12:01  [ТС]
Цитата Сообщение от das1 Посмотреть сообщение
notle
ещё вопрос. Числа могут повторяться? То есть
вот этот квадрат
7 7 7
7 7 7
7 7 7
волшебный?
Ну, исходя из условия получается так, если при n = 0, ответ 1 будет

Добавлено через 6 минут
Я написал решение, оно конечно очень тупое, но три теста как-то проходит.
Я заметил, что при n = 1 или n = 26, ответ в обоих случаях будет 6 (3 * 2 * 1).
Соотвественно чуть-чуть подумав, я набросал кодик:

Python
1
2
3
4
5
6
n = int(input())
 
if n == 0 or n == 27: print(1)
elif n == 1 or n == 26: print(6)
elif n == 2 or n == 25: print(12)
elif n == 3 or n == 24: print(24)
а потом увидев закономерность изменил его:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
n = int(input())
 
if n == 0 or n == 27:
    print(1)
    exit(0)
 
if 13 < n < 27:
    n = 27 - n;
 
ans = 6
for i in range(1, n):
    ans *= 2
 
print(ans)
Добавлено через 59 секунд
Мне кажется, если этот код доработать, то задача будет решена

Добавлено через 1 минуту
А хотя нет, тут всё сложнее
0
Заблокирован
12.09.2022, 12:26
Лучший ответ Сообщение было отмечено notle как решение

Решение

C++
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
    struct sm{ int a,b,c; };
    for(int N=0; N<=27; N++)
    {
        sm s;
        vector<sm> v;
        for(s.a=0; s.a<=9; s.a++)
            for(s.b=0; s.b<=9; s.b++)
                for(s.c=0; s.c<=9; s.c++)
                    if(s.a+s.b+s.c==N) 
                        v.push_back(s);
        int n=v.size();
        int nn=0;
        for(int i=0; i<n; i++)
            for(int j=0; j<n; j++)
                for(int k=0; k<n; k++)
                    if(v[i].a+v[j].a+v[k].a==N)
                        if(v[i].b+v[j].b+v[k].b==N)
                            if(v[i].c+v[j].c+v[k].c==N)
                            {
                                nn++;
                                /*if(N==1)
                                {
                                    printf("%d %d %d\n",v[i].a,v[j].a,v[k].a);
                                    printf("%d %d %d\n",v[i].b,v[j].b,v[k].b);
                                    printf("%d %d %d\n",v[i].c,v[j].c,v[k].c);
                                    printf("\n");
                                }*/
                            }
        printf("%2d %3d  %5d\n",N,n,nn);
    }
1
1 / 1 / 0
Регистрация: 16.05.2022
Сообщений: 19
12.09.2022, 13:37  [ТС]
Цитата Сообщение от CoderPC Посмотреть сообщение
C++
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
    struct sm{ int a,b,c; };
    for(int N=0; N<=27; N++)
    {
        sm s;
        vector<sm> v;
        for(s.a=0; s.a<=9; s.a++)
            for(s.b=0; s.b<=9; s.b++)
                for(s.c=0; s.c<=9; s.c++)
                    if(s.a+s.b+s.c==N) 
                        v.push_back(s);
        int n=v.size();
        int nn=0;
        for(int i=0; i<n; i++)
            for(int j=0; j<n; j++)
                for(int k=0; k<n; k++)
                    if(v[i].a+v[j].a+v[k].a==N)
                        if(v[i].b+v[j].b+v[k].b==N)
                            if(v[i].c+v[j].c+v[k].c==N)
                            {
                                nn++;
                                /*if(N==1)
                                {
                                    printf("%d %d %d\n",v[i].a,v[j].a,v[k].a);
                                    printf("%d %d %d\n",v[i].b,v[j].b,v[k].b);
                                    printf("%d %d %d\n",v[i].c,v[j].c,v[k].c);
                                    printf("\n");
                                }*/
                            }
        printf("%2d %3d  %5d\n",N,n,nn);
    }
Извините, а что этот код выводит?

Добавлено через 7 минут
Цитата Сообщение от notle Посмотреть сообщение
Извините, а что этот код выводит?
А хотя можете не отвечать, я немного разобрался и в принципе понял. Спасибо вам!
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6163 / 2856 / 1042
Регистрация: 01.06.2021
Сообщений: 10,444
12.09.2022, 15:41
На день рождения Егору подарили волшебный квадрат.
это же лучше, чем дезик или носки?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.09.2022, 15:41
Помогаю со студенческими работами здесь

Класс «Квадрат»: можно ли вписать в объект-квадрат со стороной A окружность радиуса R
Люди помогите, сижу уже неделю, выходит какая-то фигня. Хочу научиться, но тяжеловато) Объясните кто может, как будет выглядеть код? ...

Если квадрат числа меньше 100, напечатать число и его квадрат
Ввести с клавиатуры 10 чисел. Если квадрат числа меньше 100, напечатать число и его квадрат.

Программа, вычисляющая квадрат разности и квадрат суммы двух чисел
Добрый день, товарищи программисты. Написал программу для задачи: Написать программу, вычисляющую квадрат разности и квадрат суммы...

Умножить положительные элементы массива на квадрат наименьшего элемента, а отрицательные - на квадрат наибольшего
Код программы нужен, вот задача: Задано массив P . Умножить все положительные элементы массива на квадрат наименьшего элемента, а все...

Вывести квадрат большего числа и квадрат меньшего
ошибка вывода и не правильный ответ #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; int main() { int a, b,...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru