المپدیا

دانش‌نامه‌ی المپیاد کامپیوتر ایران

ابزار کاربر

ابزار سایت


سوالات المپیاد:مرحله ی دوم:دوره ی ۱:سوال ۳

سوال ۳

یک ماتریس $12 \times 12$ متشکل از اعداد صفر و یک را در نظر بگیرید. هر سطر این ماتریس را می‌توان به عنوان یک عدد ۱۲ رقمی در مبنای ۲ در نظر گرفت که با تبدیل آن به مبنای ۱۰ یک عدد صحیح نامنفی به دست می‌آید. با تبدیل این عدد به مبنای ۲ و در صورت لزوم افزایش ارقام از سمت چپ تا ۱۲ رقم دوباره می‌توان به سطر ماتریس دست یافت. در ماتریس فوق ارقام ۱ شکلی را به‌ وجود می‌آورند، (مانند شکل الف). ماتریس فوق را «۹۰ درجه دوران یافته» می‌نامیم در صورتی که شکل داخل آن نسبت به مرکز ماتریس، ۹۰ درجه در جهت مثبت مثلثاتی دوران داده شود، (مانند شکل ب). ماتریس فوق را «فشرده شده» می‌نامیم در صورتی که هر ماتریس $2\times 2$ داخل آن را با شرایط زیر به یک درایه تبدیل کنیم. در صورتی که تعداد درایه‌های مساوی ۱ یک ماتریس $2\times 2$ داخلی بیش‌تر از یک باشد آن ماتریس را به یک درایه‌ی ۱ و در غیر این صورت به یک درایه‌ی صفر تبدیل می‌کنیم، (مانند شکل ج). (ماتریس‌های $2 \times 2$ را از گوشه سمت چپ و بالا در نظر می‌گیریم).

الف) برنامه‌ای بنویسید که ۱۲ عدد صحیح نامنفی کوچک‌تر از ۴۰۹۶ را از ورودی گرفته و با تبدیل آن‌ها به مبنای ۲، به ترتیب سطرهای یک ماتریس $12\times 12$‌متشکل از صفر و یک را تولید کند.

ب) برنامه‌ای بنویسید که ماتریس حاصل از مرحله‌ی الف را ۹۰ درجه دوران دهد.

ج) برنامه‌ای بنویسید که ماتریس حاصل از مرحله‌ی الف را فشرده کند.


ابزار صفحه