المپدیا

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

ابزار کاربر

ابزار سایت


سوالات المپیاد:دوره ی تابستان:دوره ی ۱۰:تئوری:سوال ۸

پاسکال عجیب

تابعی به زبان پاسکال عجیب بنویسید که مسئله وجود جواب برای $SAT$ را در زمان چند جمله‌ای حل کند. متغیرهای از نوع $integer$ در زبان پاسکال عجیب نامحدود است (هر عدد صحیح را می‌توان در آن‌ها ذخیره کرد) و هر محاسبه در زمان ثابت انجام می‌شود.

در نوشتن تابع خود فرض کنید تعداد متغیرها در $n$ و تعداد عبارات در $m$ داده شده است. همچنین عبارات $SAT$ در آرایه $L$ با ابعاد $m*n$ داده شده است که $L[a,b]$ برابر است با:

  • ۰ اگر متغیر $b$ ام در عبارت $a$ ام نباشد.
  • ۱ اگر متغیر $b$ ام در عبارت $a$ ام باشد.
  • ۱- اگر نقیض متغیر $b$ ام در عبارت $a$ ام باشد.

اگر بتوان به متغیرها به شکلی مقادیر True و False نسبت داد به‌طوری که حداقل یکی از جمله‌های هر عبارت True باشد تابع باید مقدار True و در غیر این صورت False برگرداند. (منظور از هر جمله یک متغیر یا نقیض آن است که در عبارت آمده است)

راهنمایی: می‌توانید از دستورات $for،if،shr،shl،not،xor،or،and$ و عملگرهای محاسباتی و آرایه‌ها استفاده کنید که همگی زمان اجرای ثابت دارند.


ابزار صفحه