A. Tenglama
Xotira: 16 MB, Vaqt: 1000 msJahongir 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.
Kirish faylida yagona qatorda \(n(1 \le n \le 10^{18})\) soni beriladi.
Chiqish faylida a, b va c sonlarini yagona qatorda chop eting. Agar yechimga ega bo'lmasa -1 ni chop eting.
# | INPUT.TXT | OUTPUT.TXT |
---|---|---|
1 |
198 |
2 11 9 |
2 |
105 |
3 5 7 |
B. Factorial Interaktiv
Xotira: 16 MB, Vaqt: 1000 msDilshod 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.
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.
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.
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!
# | INPUT.TXT | OUTPUT.TXT |
---|---|---|
1 |
2 3 |
+ 10 + 4 ! 1 |
C. Raqamlar yig'indisini top!
Xotira: 16 MB, Vaqt: 1000 msJahongir 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.
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.
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\).
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!
# | INPUT.TXT | OUTPUT.TXT |
---|---|---|
1 |
0 |
- 288 ! 9 |
D. Yuzani top
Xotira: 16 MB, Vaqt: 1000 msIbrohim 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.
Kirishi faylida so'rovga mos ravishda alohida qatorda:
- IN - ichida
- OUT - tashqarisida
- ON - ustida
- CORNER - burchagida
so'zlari chop etiladi.
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.
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!
# | 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 msSizga 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).
Bir qatorda n va k \((1\le n, k\le 10^{10})\)
Massiv mavjud bo'lsa, uning elementlarini bir qatorda chop eting.
Agar bunday massiv xosil qilishning imkoni bo'lmasa -1 ni chop eting.
# | 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 msAlgolandiya 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 |ti - 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.
Sizga 4 ta son a, b, c, d (05) sonlari beriladi. Bulor mos ravishda gnomlarning turlarining soni.
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.
# | INPUT.TXT | OUTPUT.TXT |
---|---|---|
1 |
2 2 2 1 |
YES 0 1 0 1 2 3 2 |
2 |
1 2 3 4 |
NO |