ответ: Только не точь в точь, а то за это бан)
#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-=1;
}
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;
}
У вас есть 4-ая? Я щас создам вопрос!
Если , оцени)
2. В языке Паскаль существуют циклы: с параметром (FOR), с предусловием (WHILE..DO), с постусловием (REPEAT...UNTIL).
3. Оператор FOR для примера п.1 имеет вид: FOR K:= 1 TO 10 DO Y[K]:=SIN(K). Если в теле цикла будет несколько операторов, то они заключаются в операторных скобки BEGIN...END.
4. Во время исполнения этого оператора переменной Y[K] (элементам маccива Y) последовательно присваиваются значения SIN(K).
5. Оператор FOR применяется в тех случаях, когда число повторений заранее известно (К=1..10).
6-9. Циклы WHILE и REPEAT применяются, когда число повторений заранее неизвестно, например, для вычисления суммы ряда с заданной точностью, но их можно применять и для расчета по предыдущему примеру.
K:=0;
WHILE K<11 DO
BEGIN
K:=K+1;
Y[K]:=SIN(K)
END;
или для цикла REPEAT:
K:=0;
REPEAT
K:=K+1;
Y[K]:=SIN(K}
UNTIL K>10;
Для вычислений эти циклы равносильны, но есть одно (иногда решающее) отличие - цикл WHILE не будет выполнен ни разу, если условие сразу ложно, а цикл REPEAT сначала выполнит одну операцию, а потом, если условие окажется ложным, остановится.