سلام دوست عزیز😃👋

به مسابقه «مسابقه استخدامی ارتباطات سینا» خوش آمدی!

لینک‌های مفید برای شرکت در مسابقه:

هرگونه ارتباط با سایر شرکت‌کنندگان و یا استفاده از ابزارهای تولید کد، مثل chatGPT و... در مسابقات کوئرا ممنوع است و بعد از شناسایی از لیست شرکت‌کنندگان مسابقه حذف می‌شوید.

سوال اول تا چهارم جنبه سنجش مهارت حل مسئله را دارد. این سوالات را می‌توانید با هر زبان برنامه‌نویسی که سیستم داوری کوئرا پشتیبانی می‌کند، حل کنید (اما حل سوالات با زبان C یا ++C برای جذب اولویت دارد).

سوال پنجم مربوط به Socket Programming در زبان C است و فقط باید به این زبان حل شود.

در طول مسابقه، می‌توانید سؤالات خود را از قسمت «سوال بپرسید» مطرح کنید.

موفق باشید 😉✌

رجیستر و نویزها


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

شرکت ارتباطات سینا دو عدد رجیستر دارد که در هر کدام از آن‌ها یک عدد در مبنا ۲ و با استفاده از nn حافظه که هر کدام 0 و یا 1 هستند، ذخیره شده است. می‌خواهیم دو عدد این رجیسترها را با یکدیگر جمع بزنیم. همانطور که در مبنای ۱۰ وقتی می‌خواهیم دو عدد را جمع بزنیم، در هر جایگاه یک رقم بین 0 الی 9 به جایگاه بعدی منتقل می‌شود، در هنگام جمع زدن دو عدد در مبنای ۲، نیز هنگاه جمع زدن دو عدد در هر جایگاه یک رقم که می‌تواند 0 و یا 1 باشد به جایگاه بعدی منتقل می‌شود. به این رقم carrycarry می‌گوییم.

Carry

در این سوال دو عددی که داخل رجیسترها ذخیره شده‌اند را داریم. اما در هر دوی رجیسترها بعضی از رقم‌ها نویز داشته‌اند و نمی‌دانیم داخل آن‌ها 0 نوشته شده است و یا 1. اما می‌دانیم حداکثر یکی از این ارقام نویز خورده برابر 1 است و بقیه آن‌ها برابر 0 هستند.

کسی خبر رسانده است که وقتی این دو عدد را جمع می‌کنیم، به ازای هر جایگاهی که carrycarry آن برابر 11 باشد، رجیسترها یک واحد ناراحت می‌شوند. برای اینکه بتوانیم بیشترین میزان ممکن رجیسترها را ناراحت کنیم سوال زیر از شما پرسیده شده است.

در بین تمام حالاتی که دو عدد ما می‌توانند باشند. به این معنی که حداکثر یکی از ارقام نویز گرفته برابر 1 و بقیه برابر 0 باشند، بیشترین تعداد carrycarry ای که در زمان جمع زدن این دو عدد برابر با 1 خواهد بود چند تا است.

ورودی🔗

در سطر اول ورودی عدد nn داده می‌شود که نشان‌دهنده تعداد ارقام دو عدد مورد نظر در مبنا دو است.

1n100,0001 \leq n \leq 100,000

سپس در سطر دوم و سوم دو عدد به طول nn رقم و در مبنای دو ورودی داده می‌شوند. هر رقم از این دو عدد با 0 و یا 1 و یا کاراکتر ؟ نمایش داده می‌شود. که علامت سوال نشان‌دهنده نویز در رقم مشخص شده است.

خروجی🔗

در تنها خط خروجی باید یک عدد خروجی دهید که نشان‌دهنده بیشترین تعداد carrycarry برابر با 1 ای است که جمع این دو رجیستر می‌تواند داشته باشد. دقت کنید خروجی شما باید عددی بین 00 و nn باشد.

ورودی نمونه ۱🔗

5
101?1
00101
Plain text

خروجی نمونه ۱🔗

3
Plain text

در این حالت اگر تنها علامت‌سوال را برابر عدد 1 در نظر بگیریم بیشترین میزان ممکن که برابر ۳ عدد carrycarry است را تولید می‌کنیم.

ورودی نمونه ۲🔗

5
111?1
0001?
Plain text

خروجی نمونه ۲🔗

5
Plain text

ورودی نمونه ۳🔗

5
1???1
?1111
Plain text

خروجی نمونه ۳🔗

5
Plain text
ارسال پاسخ برای این سؤال
در حال حاضر شما دسترسی ندارید.