همه ی دانشجویان مجاز به شرکت در مسابقه هستند

رمزنگاری


موضوع امنیت در اینترنت یکی از مهم‌ترین موضوع‌های مورد مطالعه‌ی سال‌های اخیر است. یکی از روش‌های امنیت، رمزنگاری داده‌ها است. الگوریتم «پفکی» یکی از پرکاربردترین روش‌ها برای رمزنگاری است. این الگوریتم برای رمزنگاری داده‌ها، از دو دنباله‌ی a0,a1,,an1a_0,a_1,\cdots,a_{n-1} و b0,b1,,bn1b_0,b_1,\cdots,b_{n-1} استفاده می‌کند. میزان امنیت الگوریتم «پفکی» با استفاده از روش زیر قابل محاسبه است:

«جدولی با nn سطر و 32×m32 \times m ستون در نظر بگیرید که در خانه‌ی (i,j)(i,j) (0in1,0j32×m1)(0 \leq i \leq n-1 , \, 0 \leq j \leq 32 \times m-1) از آن getBit(aibj32,jmod32)getBit(a_i \bigoplus b_{\lfloor \frac{j}{32} \rfloor}, j \, mod \, 32) نوشته شده است. در این‌جا تابع getBit(x,p)getBit(x,p) بیت ppام از عدد xx را برمی‌گرداند، برای مثال getBit(6,0)=0getBit(6,0) = 0 و getBit(6,1)=1getBit(6,1) = 1 و getBit(6,2)=1getBit(6,2) = 1 هستند. تمام جدول‌هایی که از جدول ساخته شده با جابه‌جایی ستون‌ها می‌توان ساخت را در نظر بگیرید(حداکثر 32m!32m! جدول متفاوت) و به ازای هر کدام از این جدول‌ها اندازه‌ي بزرگترین زیر جدولی (بزرگترین از لحاظ تعداد خانه‌های تشکیل دهنده) که تمام خانه‌هایش ۱ است را محاسبه کنید. بیشینه اعداد محاسبه شده برابر با میزان امنیت الگوریتم پفکی به ازای ورودی‌های a0,a1,,an1a_0,a_1,\cdots,a_{n-1} و b0,b1,,bn1b_0,b_1,\cdots,b_{n-1} است. دقت کنید که تنها جابه‌جایی ستون‌ها مجاز است و جابه‌جایی سطر‌ها مجاز نیست.»

شما باید برنامه‌ای بنویسید که باتوجه به ورودی‌های الگوریتم پفکی، میزان امنیت آن را مشخص کند.

علامت \bigoplus نشان‌دهنده عملگر xorxor است. عبارت amodba\, mod\, b نیز نشان‌دهنده باقی مانده عدد aa بر bb است.

ورودی🔗

در سطر اول ورودی به ترتیب دو عدد طبیعی nn و mm آمده است.

در سطر دوم nn عدد صحیح آمده است که عدد iiام (1in)(1\leq i \leq n) آن نشان‌دهنده‌ي ai1a_{i-1} است.

در سطر سوم mm عدد صحیح آمده است که عدد iiام (1im)(1 \leq i \leq m) آن نشان‌دهنده‌ی bi1b_{i-1} است.

خروجی🔗

در تنها سطر خروجی میزان امنیت روش پفکی را به ازای دنباله‌هایی که در ورودی آمده است، چاپ کنید.

محدودیت‌ها🔗

  • 1n,m1061 \leq n,m \leq 10^6
  • 0ai,bi230 0 \leq a_i,b_i \leq 2^{30}

مثال🔗

ورودی نمونه ۱

2 2
1 2
1 2
Plain text

خروجی نمونه ۱

2
Plain text

ورودی نمونه ۲

4 4
1 3 2 10
4 1 7 15
Plain text

خروجی نمونه ۲

16
Plain text

۲۵امین دوره المپیاد کامپیوتر - آزمون نهایی اول - ۱۳۹۴/۶/۱۸

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