DEV Community

IRMuhammadjon
IRMuhammadjon

Posted on

๐Ÿ‘‘Kichik Shahzoda

๐Ÿ‘‘ Kichik Shahzoda va Samon Yo'li Galaktikasi: C#da Structdan Foydalanib Masala Yechimi

Kichik Shahzoda o'z planetasida yashaydi. Uning malikasi esa boshqa planetada. ๐ŸŒ Kichik Shahzoda malikaning xavfda ekanligini bilib, uni qutqarishga qaror qiladi. Ammo uning raketasi unchalik kuchli emas, shuning uchun u kamroq planetalarni kesib o'tish yo'lini tanlashi kerak.

๐Ÿ“œ Masala Sharti

Kichik Shahzoda malikaning planetasiga borishi uchun kamida nechta planeta chegarasini kesib o'tishini hisoblash kerak. Masala sharti shundayki, planetalar bir-birining chegarasini kesmaydi va Kichik Shahzoda hamda malika hech qachon planeta chegarasida joylashmaydi.

Input

Birinchi qator:

  • Test caselar soni T.

Har bir test case:

  1. Kichik Shahzodaning va Malikaning koordinatalari:

    • (x1, y1) va (x2, y2)
  2. Planetalar soni n.

Har bir planetaning:

  • Markazi (cx, cy)
  • Radiusi r. Kichik Shahzoda Yo'li

Output

Har bir test case uchun Kichik Shahzoda nechta planeta chegarasini kesib o'tishi kerakligi aniqlanadi.


๐Ÿš€ Yechim Strukturasida:

Yechimni struct yordamida amalga oshirdik. C# da struct bizga obyektlarni kichik hajmda yaratish imkonini beradi. Masalan, biz bu masalada Kichik Shahzoda, Malika va Planetalarning koordinatalarini saqlash uchun struct tuzishimiz mumkin.

Yana ham qizig'i biz agar Point struct ni tuzib chiqsak uni Planet struct ichida chaqirsak 1 o'q bilan 2 quyoni urgan bo'lamiz , ya'ni planet ichida point va radiusning o'zi boladi, shudan qilip keyin biz planet struct ichida berilgan nuqtani unig ichidami yoki yoqligini tekshirib beradigan funksia yosak ishimizni juda osonlashtiradi.

๐ŸŒ Planet Chegarasini Kesish Hisobi

Planetani kesib o'tishni aniqlash uchun har bir planetaning radiusi va Kichik Shahzoda bilan Malikaning harakat yo'nalishini hisoblash kerak bo'ladi. Man quyidagicha algoritmni qo'lladim:

  1. Planetaning radiusi va nuqtalarning (Kichik Shahzoda va Malika) planetaga bo'lgan masofasi orasidagi munosabatdan foydalanib, chegarani kesish sonini aniqladim.
  2. Har bir planetaning markaziy nuqtasi va radiusi bo'yicha, nechta marta Kichik Shahzoda chegara orqali o'tishini hisobladim.

๐Ÿ’ป Dastur Yechimi

To'xtang agar siz bu masala haqida oldin eshitmagan bo'sangiz oldin urinib ko'ring :
๐Ÿ”— Masala!: Kichik Shahzoda Masalasi

Ushbu masalani yechish uchun C# tilidan foydalandim. Quyidagi GitHub repostoriyamda dastur kodi joylangan. To'liq kod :

๐Ÿ”— GitHub Repository: Masalaning yechimi


๐Ÿ Xulosa

Kichik Shahzoda va malikaning yo'lini topish uchun structdan foydalandik va planeta chegarasini kesish yechimini C# tilida amalga oshirdim. Bu masala nafaqat algoritmik jihatdan qiziq, balki C# struct bilan ishlashda ham foydali bo'ldi. ๐ŸŽฏ

Top comments (0)