• محدودیت زمان: ۲ ثانیه
  • محدودیت حافظه: ۶۴ مگابایت

یک مربع جادویی، یک ماتریس n×nn \times n است که در آن، عداد mm تا m+n21m + n^2 - 1 قرار دارند و مجموع اعداد هر سطر، هر ستون و هر قطر، باهم برابر است. شکل زیر یک مربع جادویی 3×33 \times 3 را نشان می‌دهد که در آن اعداد یک تا ۹ قرار گرفته‌اند و مجموع اعداد هر سطر، ستن و قطر برابر با ۱۵ است.

یک راه حل برای ساختن مربع جادویی از مرتبه‌ی فرد (وقتی که nn فرد باشد)، قرار دادن کمینه‌ی اعداد mm در خانه‌ی شماره n+12\frac{n+1}{2} از ردیف اول و سپس شروع به قراردهی اعداد از عدد k=m+1k = m + 1 مطابق الگوریتم زیر است. توجه شود که بالاترین سطر شماره یک، پایین‌ترین سطر شماره nn، چپ‌ترین ستون شماره یک و راست‌ترین ستون شماره nn فرض شده است.

مربع جادویی

  1. به سمت راست-بالا حرکت کن؛ بنابراین اگر خانه‌ی فعلی سطر ii و ستون jj باشد، خانه‌ی بعدی سطر i1i-1 و ستون j+1j+1 خواهد بود.

  2. اگر شماره‌ی سطر و شماره‌ی ستون خانه از یک تا nn باشد، به مرحله‌ی شماره ۳ برو. در غیر این صورت، چنانچه شماره‌ی سطر صفر باشد، شماره‌ی سطر را به nn تغییر بده و در صورتی که شماره ستون n+1n+1 باشد، آن را به شماره‌ی یک تغییر بده.

  3. چنانچه خانه قبلاً توسط عددی پر شده باشد، شماره‌ی سطر را یک عدد افزایش بده (یک ردیف یه پایین بیا)؛ در غیر این صورت به مرحله‌ی ۴ برو.

  4. عدد kk را در خانه قرار بده. اگر تمامی خانه‌ها پر باشد، مربع جادویی ساخته‌شده است؛ در غیر این صورت عدد را یکی افزایش بده و مرحله‌ی یک را تکرار کن.

در شکل زیر، mm برابر یا یک و nn برابر با سه است. مراحل این الگوریتم به ترتیب مشاهده می‌شود. همانطور که می‌بینید، خروجی الگوریتم، مربعی جادویی است مجموع هر سطر، ستون و یا قطر آن برابر با ۱۵ است. حال برنامه‌ای بنویسید که ابتدا عدد nn و سپس عدد mm گفته شده در بالا را دریافت کند و مطابق با الگوریتم گفته شده، مربع جادویی را تولید کند.

الگوریتم مربع جادویی

ورودی

در ورودی عدد nn و mm آمده است. 1n,m1 0001 \leq n , m \leq 1\ 000

خروجی

در خروجی مربع جادویی را چاپ کنید.

مثال

ورودی نمونه ۱

3 1
Plain text

خروجی نمونه ۱

8 1 6
3 5 7
4 9 2
Plain text

ارسال پاسخ برای این سؤال
فایلی انتخاب نشده است.