A. Tenglama

Xotira: 16 MB, Vaqt: 1000 ms
Masala

Jahongir so'ngi kunlarda tengalamalarga juda qiziqib qoldi. U bir kitobda quyidagi tenglamani ko'rib qoldi. 

\(a \cdot b \cdot c = n\)

bunda \(a \neq b\) va \(b \ne c\) shart bajarilishi kerak va a,b,c va n natural sonlardir.

Kiruvchi ma'lumotlar:

Kirish faylida yagona qatorda \(n(1 \le n \le 10^{18})\) soni beriladi.

Chiquvchi ma'lumotlar:

Chiqish faylida a, b va c sonlarini yagona qatorda chop eting. Agar yechimga ega bo'lmasa -1 ni chop eting.

Misollar:
# INPUT.TXT OUTPUT.TXT
1
198
2 11 9
2
105
3 5 7

B. Factorial Interaktiv

Xotira: 16 MB, Vaqt: 1000 ms
Masala

Dilshod matematika faniga juda qiziqadi. Shu sababli u yaqinda faktorial tushunchasini o'rgandi. Endi u o'rtoqlari bilan o'yin o'ynamoqchi. Bunda Dilshod bir \(N(0 \le N \le 10^9)\) son o'ylaydi va o'rtoqlari unga savol berishlari mumkin. Bunda savol quyidagicha \(+ X (1\le X \le 10^9)\) ko'rinishida ya'ni Dilshod o'zi o'ylagan N soniga X sonini qo'shib boradi va natijani faktoriali nechta nol bilan tugashini aytadi. Sizning vazifangiz N sonining qiymatini topish. So'rovlar soni esa cheklangan. Ular 4 tani tashkil qiladi.

Kiruvchi ma'lumotlar:

Kirish faylida har bir so'rovga mos ravishda Dilshodda oxirgi so'rovdan keyingi natijaga so'rovdagi sonni qo'shish orqali hosil qilingan sonning faktoriali nechta nol bilan tugashi alohida qatorda chop etiladi.

Chiquvchi ma'lumotlar:

Har bir so'rovda mos ravishda + X ko'rinishida so'rov yuborishingiz kerak bo'ladi. Javobni topgach esa ! ANS ko'rinishida javob yo'llaysiz. Har bir so'rov alohida qatorda bo'lishi shart.

Izoh:

ESLATMA: Interaktiv masalada sizning javobingizni hakamlar hay’ati qabul qila olishi uchun siz har bir so’rovingiz oxirida

  • Agar Pascal tilida ishlagan bo’lsangiz: flush(output)
  • Agar C/C++ tilida ishlagan bo’lsangiz fflush(stdout) yoki cout.flush()
  • Agar Java tilida ishlagan bo’lsangiz System.out.flush()
  • Agar pythonda ishlagan bo’lsangiz sys.stdout.flush()
  • Agar C# tilida ishlagan bo’lsangiz Console.Out.Flush()

Buyruqlardan birini yozishingiz kerak bo’ladi!

Misollar:
# INPUT.TXT OUTPUT.TXT
1
2
3
+ 10
+ 4
! 1

C. Raqamlar yig'indisini top!

Xotira: 16 MB, Vaqt: 1000 ms
Masala

Jahongir so'ngi kunlarda natural sonlar ustida ko'p ishlaganligi sababli uni raqamlar yig'indisi to'g'risidagi har xil g'oyalar qamrab oldi. Shulardan birini sizlar bilan bo'lishmoqchi. U bir son o'yladi sizdan esa uni raqamlar yig'indisi toki 1 xonali son bo'lgunga qadar qo'shib borishdan hosil bo'lgan sonni topishingizni so'rayapti. Aytaylik u 897 ni o'ylagan bo'lsin:

897 => 8 + 9 + 7 = 24

24 => 2 + 4 = 6

demak sizdan javob sifatida 6 ni kutadi.

Faqat muammo shundaki undan faqat bir narsani so'rashingiz mumkin qaysidir sonni aytasiz u o'zi o'ylagan sondan siz aytgan sonni ayirib uning raqamlar yig'indisini aytadi. Bunda u o'ylagan son milliardan oshmaydigan nomanfiy butun son. Siz undan faqat bir marta savol so'rashingiz mumkin. Agar so'rovlar soni oshib ketsa Time Limit tarzida javob olasiz.

Kiruvchi ma'lumotlar:

Kirish faylida so'rovingizga mos ravishda hosil bo'lgan sonning raqamlar yig'indisi chop etiladi. Agar u manfiy son bo'ladigan bo'lsa uning absolyut qiymatining raqamlar yig'indisini hisoblaydi va uning manfiy ishoradagi qiymatini qaytaradi.

Chiquvchi ma'lumotlar:

Chiqish faylida mos ravishda "- X" ko'rinishida so'rov yuborasiz. Javobni esa "! A" ko'rinishida yo'llaysiz. Bunda \(1 \le X \le 10^9\) va \(0 \le A \le 10^9\).

Izoh:

1-testga izoh:

288 ni ayirganda 0(nol) chiqdi demak u 288 ni o'ylagan.

288 => 2 + 8 + 8 = 18

18 => 1 + 8 = 9

Shunday qilib javob 9. 

  • 288 ni qanday bildingiz?
  • Chunki testlarni o'zim tuzganman:)
  • Biz qanday bilamiz?
  • Barcha sonlar uchun ishlaydigan dastur yozasiz.

ESLATMA: Interaktiv masalada sizning javobingizni hakamlar hay’ati qabul qila olishi uchun siz har bir so’rovingiz oxirida

  • Agar Pascal tilida ishlagan bo’lsangiz: flush(output)
  • Agar C/C++ tilida ishlagan bo’lsangiz fflush(stdout) yoki cout.flush()
  • Agar Java tilida ishlagan bo’lsangiz System.out.flush()
  • Agar pythonda ishlagan bo’lsangiz sys.stdout.flush()
  • Agar C# tilida ishlagan bo’lsangiz Console.Out.Flush()

Buyruqlardan birini yozishingiz kerak bo’ladi!

Misollar:
# INPUT.TXT OUTPUT.TXT
1
0
- 288
! 9

D. Yuzani top

Xotira: 16 MB, Vaqt: 1000 ms
Masala

Ibrohim so'ngi kunlarda ishdagi muammolar tufayli grafika bilan ishlashiga to'g'ri keldi. Ko'p ishlab yuborganligi sababli hayolida har xil shakllar chiza boshladi. Endi u sizni qiynamoqchi. U tekislikda tomonlari koordinata o'qlariga parallel bo'lgan va koordinatalari boshi (0,0) nuqta uning ichida yoki tomonlarida yotuvchi to'g'ri to'rtburchakni tasavvur qildi. U sizdan u tassavvur qilgan to'rtburchak yuzini topishingizni so'rayapti. Qanday bema'nilik to'g'rimi? O'zing tasavvur qildingmi o'zing top-da! Lekin, unday desangiz Ibrohim xafa bo'lib qolishi mumkin. Keling shuning uchun unga buni topishda yordam beraylik. Bunda siz tekislikdagi ixtiyoriy nuqtani ″? X Y″ ko'rinishida so'raysiz, X va Y absolyut qiyamti milliarddan oshmaydigan butun sonlar. U sizga mos ravishda siz so'ragan nuqta to'rtburchak:

  • IN - ichida
  • OUT - tashqarisida
  • ON - ustida
  • CORNER - burchagida

deya javob qaytaradi.

Faqat so'rovlar soni 128 tadan oshmasligi kerak.

Kiruvchi ma'lumotlar:

Kirishi faylida so'rovga mos ravishda alohida qatorda:

  • IN - ichida
  • OUT - tashqarisida
  • ON - ustida
  • CORNER - burchagida

so'zlari chop etiladi.

Chiquvchi ma'lumotlar:

Chiqish faylida alohida qatorda ″? X Y″  ko'rinishida so'rovlar yuboriladi. \(-10^9 \le X, Y \le 10^9\). Javobni topgacha esa ″! ANS″ ko'rinishida javob yo'llaysiz.

Izoh:

1-testga izoh:

4 ta burchagini topib oldik demak u tomoni 5 bo'lgan to'rtburchak ekan.

  • 4 ta burchagini qanday topdingiz?
  • Chunki testlarni o'zim tuzganman:)
  • Biz qanday bilamiz?
  • Barcha sonlar uchun ishlaydigan dastur yozasiz.

ESLATMA: Interaktiv masalada sizning javobingizni hakamlar hay’ati qabul qila olishi uchun siz har bir so’rovingiz oxirida

  • Agar Pascal tilida ishlagan bo’lsangiz: flush(output)
  • Agar C/C++ tilida ishlagan bo’lsangiz fflush(stdout) yoki cout.flush()
  • Agar Java tilida ishlagan bo’lsangiz System.out.flush()
  • Agar pythonda ishlagan bo’lsangiz sys.stdout.flush()
  • Agar C# tilida ishlagan bo’lsangiz Console.Out.Flush()

Buyruqlardan birini yozishingiz kerak bo’ladi!

Misollar:
# INPUT.TXT OUTPUT.TXT
1
CORNER
CORNER
IN
OUT
CORNER
CORNER
? 0 0
? 0 5
? 2 2
? 10 10
? 5 5
? 5 0
! 25

E. MAX GCD

Xotira: 16 MB, Vaqt: 1000 ms
Masala

Sizga n-musbat butun son berilgan. Siz shunday k-ta musbat butun sonlardan tashkil topgan qatʼiy o‘suvchi massiv hosil qiling-ki, massivdagi sonlar yig‘indisi n ga teng bo‘lsin va massiv EKUB maksimal bo‘lsin (Ya'ni (\(EKUB(a_1, a_2, ..., a_k)\) -> max).

Kiruvchi ma'lumotlar:

Bir qatorda n va k \((1\le n, k\le 10^{10})\)

Chiquvchi ma'lumotlar:

Massiv mavjud bo'lsa, uning elementlarini bir qatorda chop eting.
Agar bunday massiv xosil qilishning imkoni bo'lmasa -1 ni chop eting.

Misollar:
# INPUT.TXT OUTPUT.TXT
1
6 3
1 2 3
2
8 2
2 6
3
5 3
-1

F. Algolandiya armiyasi

Xotira: 16 MB, Vaqt: 1000 ms
Masala

Algolandiya mamlakatida pakana bo'yli gnomlar yashaydi. Algolandiyada Gnomlarning bo'yining uzunligiga ko'ra ularni 4 ta guruhga bo'lishadi. Bular 0, 1, 2 va 3 - guruhlardir. 0 - guruh eng past bo'ylilar va 3 - guruh eng baland bo'ylilar. Siz Algolandiya armiyasining kapitanisiz va siz askarlaringizni safini chiroyli holatga keltirishingiz kerak. Agar safning ixtiyori qismida ketma-ket turgan gnomlarning turlari |t- ti - 1| = 1 (bu yerda 1 < i ≤ n,  n - armiyadagi gnomlar soni) shartni qanoatlantirsa bu saf Chiroyli saf deyiladi. Sizdan a ta 0 - turli, b ta 1 - turli, c ta 2 - turli va d ta 3 - turli gnom askarlaringiz bor. Sizning vazifangiz ularni chiroyli safga joylash yoki buning imkoni yo'qligini ko'rsatishdan iborat.

Kiruvchi ma'lumotlar:

Sizga 4 ta son a, b, c, d (05) sonlari beriladi. Bulor mos ravishda gnomlarning turlarining soni.

Chiquvchi ma'lumotlar:

Agar gnomlarni safga joylay olsangiz 1 - qatorda ″YES″  so'zini  va 2-qatorda a + b + c + d ta elementni ya`ni safni ketma-ketligini ekranga chiqaring. Agar yechimlar ko'p bo'lsa ixtiyoriy birini chiqarishingiz mumkin. Yechim yo'qligini aniqlaganingizda ″NO″ so'zini ekranga chiqaring.

Misollar:
# INPUT.TXT OUTPUT.TXT
1
2 2 2 1
YES
0 1 0 1 2 3 2
2
1 2 3 4
NO
Kitob yaratilingan sana: 15-Nov-24 06:18