- محدودیت زمان: ۲ ثانیه
- محدودیت حافظه: ۶۴ مگابایت
یک مربع جادویی، یک ماتریس $n \times n$ است که در آن، عداد $m$ تا $m + n^2 - 1$ قرار دارند و مجموع اعداد هر سطر، هر ستون و هر قطر، باهم برابر است. شکل زیر یک مربع جادویی $3 \times 3$ را نشان میدهد که در آن اعداد یک تا ۹ قرار گرفتهاند و مجموع اعداد هر سطر، ستن و قطر برابر با ۱۵ است.
یک راه حل برای ساختن مربع جادویی از مرتبهی فرد (وقتی که $n$ فرد باشد)، قرار دادن کمینهی اعداد $m$ در خانهی شماره $\frac{n+1}{2}$ از ردیف اول و سپس شروع به قراردهی اعداد از عدد $k = m + 1$ مطابق الگوریتم زیر است. توجه شود که بالاترین سطر شماره یک، پایینترین سطر شماره $n$، چپترین ستون شماره یک و راستترین ستون شماره $n$ فرض شده است.
-
به سمت راست-بالا حرکت کن؛ بنابراین اگر خانهی فعلی سطر $i$ و ستون $j$ باشد، خانهی بعدی سطر $i-1$ و ستون $j+1$ خواهد بود.
-
اگر شمارهی سطر و شمارهی ستون خانه از یک تا $n$ باشد، به مرحلهی شماره ۳ برو. در غیر این صورت، چنانچه شمارهی سطر صفر باشد، شمارهی سطر را به $n$ تغییر بده و در صورتی که شماره ستون $n+1$ باشد، آن را به شمارهی یک تغییر بده.
-
چنانچه خانه قبلاً توسط عددی پر شده باشد، شمارهی سطر را یک عدد افزایش بده (یک ردیف یه پایین بیا)؛ در غیر این صورت به مرحلهی ۴ برو.
-
عدد $k$ را در خانه قرار بده. اگر تمامی خانهها پر باشد، مربع جادویی ساختهشده است؛ در غیر این صورت عدد را یکی افزایش بده و مرحلهی یک را تکرار کن.
در شکل زیر، $m$ برابر یا یک و $n$ برابر با سه است. مراحل این الگوریتم به ترتیب مشاهده میشود. همانطور که میبینید، خروجی الگوریتم، مربعی جادویی است مجموع هر سطر، ستون و یا قطر آن برابر با ۱۵ است. حال برنامهای بنویسید که ابتدا عدد $n$ و سپس عدد $m$ گفته شده در بالا را دریافت کند و مطابق با الگوریتم گفته شده، مربع جادویی را تولید کند.
ورودی
در ورودی عدد $n$ و $m$ آمده است. $$1 \leq n , m \leq 1\ 000$$
خروجی
در خروجی مربع جادویی را چاپ کنید.
مثال
ورودی نمونه ۱
3 1
خروجی نمونه ۱
8 1 6
3 5 7
4 9 2
ارسال پاسخ برای این سؤال