المپدیا

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

ابزار کاربر

ابزار سایت


سوالات المپیاد:متفرقه:سوال های ای سی ام سایت تهران:دوره ی ۱۲:f

conditional statement

بانجول یک کار به شرکتش داده‌است! او به شرکت یک تکه کد نوشته شده به زبان پاسکال داده است که مجموعه‌ای از چراغ‌ها را کنترل می‌کند، و او می‌خواهد شرکت تا جای ممکن اندازه کد را کوچک کند در حالی که منطق کد همان چیزی باشد که از قبل بوده.

کد از چندین گزاره شرطی تشکیل شده است. هر گزاره شرطی یک خط است به شکل :

می‌باشد به طوری که:‌

  • <variable> یک رشته از حروف کوچک انگلیسی به‌طول حداکثر ۲۵۵ است که بیانگر نام یک متغییر در زبان پاسکال است.
  • <comparision-operator> یا علامت = است یا < یا >.
  • <comparision-value> یک عدد ۳۲ بیتی است که قرار است با <variable> مقایسه شود.
  • <light-number> یک عدد ۳۲ بیتی است بیانگر شماره چراغ است که اگر گزاره شرطی برقرار باشد این چراغ روشن می‌شود (اگر از قبل روشن باشد اتقافی نمی‌افتد)‌

تنها تغییری که بانجول اجازه می‌دهد به کد داده شود حذف کردن یک خط کامل از کد است (یک گزاره شرطی). او می‌خواهد حداکثر تعداد خط را حذف کند که منطق برنامه دقیقا مثل قبل باشد. شما به او کمک کنید تا بیش‌ترین تعداد خط که می‌شود حذف کرد و منطق برنامه تغییری نکند را به او بگویید. فرض کنید اول کار همه چراغ‌ها خاموش هستند.

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

ورودی

  • ورودی از چندین تست تشکیل شده‌است. در خط اول هر ورودی عدد $n$ $n\leq500)$) تعداد خط‌های برنامه آمده است. سپس در هر یک از $n$ خط بعدی یک خط از برنامه (یک گزاره شرطی) آمده‌است (مطابق با شکل بالا).
  • ورودی با عدد ۰ تمام می‌شود.

خروجی

به ازای هر تست، بیش‌ترین تعداد خط که می‌شود حذف کرد و منطق برنامه تغییری نکند را چاپ کنید.

محدودیت‌ها

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

ورودی و خروجی نمونه

ورودی نمونه خروجی نمونه
7
if aa < 4 then turnOn( 3 );
if aa > 7 then turnOn( 3 );
if aa = 7 then turnOn( 3 );
if aa = -1 then turnOn( 3 );
if aa < 7 then turnOn( 3 );
if b = 6 then turnOn( 4 );
if b = 6 then turnOn( 3 );
4
if pq = 6 then turnOn( 7 );
if pq = 6 then turnOn( 7 );
if pq = 6 then turnOn( 1 );
if pq = 2 then turnOn( 1 );
4
if pq = 6 then turnOn( 8 );
if pq = 6 then turnOn( 8 );
if pq = 6 then turnOn( 9 );
if pq < 8 then turnOn( 9 );
0
3
1
2

پاسخ

منتظر پر کردن این قسمت توسط علاقمندان هستیم.


ابزار صفحه