سوالات هفته چهارم لیگ مای‌کد به همراه پاسخ

سوالات هفته چهارم لیگ مای‌کد به همراه پاسخ

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

دریافت
عنوان: بازی NIM
حجم: 212 کیلوبایت
توضیحات: سوال چالشی بازی NIM با بکارگیری عملگر باقی‌مانده
پاسخ تیم برنده


دریافت
عنوان: بارکد نمونه‌های خون
حجم: 199 کیلوبایت
توضیحات: سوال چالشی تشخیص صحت بارکد خونی با بررسی شروط

پاسخ تیم برنده 


دریافت
عنوان: یافتن عدد در یک بازه با بیشترین عدد اول
حجم: 258 کیلوبایت
توضیحات: سوال چالشی یافتن عددی در یک بازه مشخص که دارای بیشترین اعداد اول در ساختار آن است

پاسخ تیم برنده


تابع اصلی مرتبط با سوال اول

def code(inp):
    num = inp.split(",")  # جدا سازی ورودی
    m = int(num[0]) - int(num[1])  # دریافت تعداد چوب‌هایی که روی زمین هستند
    if m % 4 == 0:  # بررسی اینکه آیا تعداد چوب‌ها به چهار بخش‌پذیر است یا نه
        return "NOK"
    return m % 4  # نشان می‌دهد که چند چوب باید برداریم تا به عدد چهار برسیم و برنده شویم

تابع اصلی مرتبط با سوال دوم

import re   # استفاده از ماژول "Regular Expression" برای فیلتر کردن رشته


def check_valid_barcode(bar_code):  # تابع برای اعمال شرط ها

    # الگو برای برقراری شرط ها که به متود "match" داده می شود
    pattern = r"^\*[A-Z0-9.-]+\*$"

    if re.match(pattern, bar_code) and len(bar_code) <= 22:  # "if" برای پیدا کردن بارکد های درست
        return "OK"

    return "NOK"

# خواندن فایل ها از "input.txt" و نوشتن خروجی های تابع در "output.txt"

تابع اصلی مرتبط با سوال سوم

// تابعی برای یافتن تمامی اعداد اول تا عدد مشخص‌شده با روش غربال اراتوستن
func sieveOEratosthenes(num int) []int {
	arr := []int{}
	for i := 2; i <= num; i++ { // بررسی تمامی اعداد از ۲ تا عدد مشخص‌شده
		first := false
		// Log(n)*n برای حفظ پیچیدگی کد تا اون عدد مورد نظر شمارش میشه
		for j := 2; j < i; j++ {  // بررسی مقسوم‌علیه‌های عدد i برای تشخیص اول بودن

			// بررسی اینکه آیا i بر j بخش‌پذیر است یا نه
			if i%j == 0 {
				first = true
			}

		}
		// اگر عدد اول باشد، به آرایه اضافه می‌شود
		if !first {
			arr = append(arr, i)
		}
	}
	return arr
}

func code(num int) int {
	// دریافت لیست اعداد اول تا num
	one := sieveOEratosthenes(num)

	// آرایه‌ای برای ذخیره عددی که بیشترین مقسوم‌علیه‌های اول را دارد
	ou := [2]int{0, 0}

	// بررسی تمام اعداد تا num
	for i := 2; i <= num; i++ {
		count := 0
		// بررسی شمارش تعداد مقسوم‌علیه‌های اول هر عدد
		for _, v := range one {
			// بررسی می‌شود که آیا عدد i بر عدد اول v بخش‌پذیر است و v از i کوچکتر است
			if i > v && i%v == 0 {
				count++
			}
		}

		// اگر تعداد مقسوم‌علیه‌های اول از مقدار ذخیره‌شده بیشتر باشد، مقدار جدید جایگزین می‌شود
		if count > ou[1] {
			ou[0] = i
			ou[1] = count
		}
	}

	return ou[0]
}


۰ ۰ ۰ دیدگاه

دیدگاه‌ها

هیچ نظری هنوز ثبت نشده است.
ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی

لیگ دانش‌آموزی ACM - مای‌کُد

این لیگ در طول سالی تحصیلی و از آذر‌ماه تا فروردین‌ماه سال بعد به صورت ترکیبی برخط/حضوری برگزار خواهد شد.

دسته‌بندی
آخرین مطلب
پیوندها
بایگانی