М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
sheramedi
sheramedi
18.10.2021 04:44 •  Информатика

ТОЛЬКО НА С++ (СИРИУС) Магический квадрат
Магическим квадратом называют таблицу, в которой записаны числа 1,2,3,… по одному разу, так что сумма чисел в каждой строке и в каждом столбце равные. Мы расскажем вам об одном из методов построения магических квадратов (его называют сиамским). Он годится только для построения квадратов с нечётной стороной (3×3,5×5,…).

Поставим число 1 в верхнюю клетку центрального столбца. Далее будем двигаться по диагонали вправо-вверх, расставляя в клетки последовательно числа 2,3,4,…. Если мы вышли за пределы таблицы вверх, то нужно перейти к нижней клетке того же столбца и продолжить с неё. Если мы вышли за правую границу, нужно перейти к левой клетке той строки, куда мы должны были попасть. Если же мы одновременно вышли и вверх, и вправо, то нужно перейти в левую нижнюю клетку квадрата.

Если в следующей клетке на нашем пути уже стоит число, то вместо хода “вправо-вверх” нужно сделать ход “вниз” (опять же, если мы при этом выйдем за границы квадрата, нужно перейти к верхней клетке того же столбца). Примеры для квадратов 3×3 и 5×5 показаны на рисунках.

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

На вход подается одно натуральное нечётное число N, не превосходящее 30 — размер квадрата.

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

Выведите числа, записанные в квадрате. Выравнивать числа по столбцам не обязательно. Обратите внимание: требуется вывести именно магический квадрат, полученный применением указанного метода.

Примеры
Ввод
3
Вывод
8 1 6
3 5 7
4 9 2
ВВОД
5
ВЫВОД
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9

👇
Ответ:
ИноК11
ИноК11
18.10.2021

#include <iostream>

#include <vector>

#include <cstdint>

using namespace std;  template <class T>

istream& operator>>(istream &in, vector<T> &vec) {   for (auto &it : vec)     in >> it;   return in;

}  

template <class T>

ostream& operator<<(ostream &out, vector<T> &vec) {   for (auto &it : vec)     out << it << ' ';   return out;

}  

template <class T, class U>

istream& operator>>(istream &in, pair<T, U> &pair) {   in >> pair.first >> pair.second;   return in;

}  

template <class T, class U>

ostream& operator<<(ostream &out, pair<T, U> &pair) {   out << pair.first << ' ' << pair.second;   return out;

}

signed main(void) {     int32_t n; cin >> n;     vector<vector<int64_t>> a(n, vector<int64_t>(n,-1));     int64_t x = 0, y = n/2;     a[x][y] = 1;     for(int32_t i = 2; i <= n*n; ++i) {         int _x = x, _y = y;         if(!x) {             x =  n-1;         }         else {             --x;         }         if(y == n-1) {             y = 0;         }         else {             ++y;         }         if(a[x][y] != -1) {             x= _x, y = _y;             while(a[x][y] != -1) {                 if(x == n-1) {                     x = 0;                 }                 else {                     ++x;                 }             }         }         a[x][y] = i;     }     for(int32_t i = 0; i < n; ++i) {         cout << a[i] << '\n';     }     return 0;  }

Объяснение:

Запишем на C++ то, что написано в условии.

Если надо, то код также прикрепил в виде файла

Списывать не хорошо)

Если повезёт увидемся в (СИРИУС)

4,4(27 оценок)
Открыть все ответы
Ответ:
Асия22222
Асия22222
18.10.2021

{Целевой язык не указан, приведу пример на Haskell}

Цена вычисляется как Price = A + B \times N

C - максимальная цена, которую мы можем себе позволить.

Поэтому N = \max \Leftrightarrow N = (C - A) div B, где div - оператор целочисленного деления.

Кодmodule Spinner (spinner, maybeTo) whereimport Control.Monad.Fail as MFail (MonadFail, fail) import System.IO (hFlush, stdout)import Text.Read (readMaybe)import Data.Maybe (maybe)maybeTo :: (MonadFail m) => Maybe b -> String -> m bmaybeTo Nothing msg = MFail.fail msgmaybeTo (Just a) _ = return aspinner :: IO ()spinner = do    putStr "Enter an A: "    hFlush stdout    maybeA <- fmap readMaybe getLine :: IO (Maybe Int)    a <- maybeTo maybeA "It's not an Int"    putStr "Enter an B: "    hFlush stdout    maybeB <- fmap readMaybe getLine :: IO (Maybe Int)    b <- maybeTo maybeB "It's not an Int"    putStr "Enter an C: "    hFlush stdout    maybeC <- fmap readMaybe getLine :: IO (Maybe Int)    c <- maybeTo maybeC "It's not an Int"    maybe (putStrLn "You can't use 0 with B var!")            (putStrLn . ("The maximum spinner's levers number is  " ++) . show)            (makeNumber a b c)    putStrLn ""makeNumber :: Int -> Int -> Int -> Maybe Int    makeNumber _ 0 _ = NothingmakeNumber a b c = Just $ div (c - a) b
Спиннер – модная игрушка c подшипником в основании, к которому прикреплены лопасти. Афанасий открыл
Спиннер – модная игрушка c подшипником в основании, к которому прикреплены лопасти. Афанасий открыл
Спиннер – модная игрушка c подшипником в основании, к которому прикреплены лопасти. Афанасий открыл
4,5(92 оценок)
Ответ:
leda2003
leda2003
18.10.2021

Она не могла бы набрать целое количество очков не входящее в промежуток [36;52], а также любое нецелое количество очков.

Объяснение:

Минимальное число очков которое она может набрать, если промахнется в двух последних бросках, т.к. именно за них она получает больше всего очков. Т.е. минимально число очков вычисляется как 1+2+3+4+5+6+7+8 = 36.

Минимальное число очков которое она может набрать, если промахнется в двух первых бросках, т.к. именно за них она получает меньше всего очков. Т.е. максимально число очков вычисляется как 3+4+5+6+7+8+9+10 = 52.

Между 36 и 52 она может набрать любое целое число очков.

"Сместим" проигрыш с 9 позиции на 8. Получим 1+2+3+4+5+6+7+0+9+0 = 37.

Затем с 8 на 7: 1+2+3+4+5+6+0+8+9+0 = 38.

И т.д. вплоть до 0+0+3+4+5+6+7+8+9+10=52

Получается что она может набрать любое целое число очков в промежутке [36;52]

 

Не забывайте нажать " ", поставить оценку и, если ответ удовлетворил, то выберите его как "Лучший"

Успехов в учебе

4,6(2 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ