Masala #PEFLDUK2TP
Upakovka chisel
Tarmoq orqali ma'lumot uzatishda ularni samarali tarzda kodlash muhimdir. Biz raqamlarni dekodlashning samarali usulini tavsiflaymiz. Ushbu usul kodlarni o'zgaruvchan uzunlikda ishlatadi va bu usulni qo'llashda, har bir kod boshqa raqamning prefiksi bo'lmasligi kerak. Sizning vazifangiz — raqamlarni optimallashtirilgan tarzda kodlash.
Kiruvchi ma'lumotlar:
Kodlashda olingan raqamlar −263 dan 263−1 gacha bo'ladi (bu Java'dagi
long
, Delphi'dagiint64
, C++'dagi__int64
turiga mos keladi).Kodlangan raqamlar 1 dan 9 baytgacha o'zgaruvchan uzunlikda bo'ladi.
Dastlabki baytni tekshirishdan boshlanadi. Agar baytda barcha bitlar 1 bo'lsa (0xff), q=8 deb belgilanadi va bu 8 baytlik standart formatda kodlashni bildiradi.
Agar baytda 1-lar bilan to'ldirilgan bo'lsa, bu baytni
0xff
bilan to'ldirish yoki nol bilan to'ldirish kabi qo'shimcha usullar mavjud.
Chiquvchi ma'lumotlar:
Har bir raqamni kodlash va uni hex formatida chiqarish kerak.
Misollar
# | input.txt | output.txt |
---|---|---|
1 |
9 0 1 2 3 100 500 1000000 -1 -100 |
00 01 02 03 8064 81f4 cf4240 7f bf9c |
Izoh:
- Dastlabki baytni tekshirib, qadar bo'lgan 1-larni sanash.
- Qolgan baytlarni to'g'ri tarzda formatlash.
- Natijani hexadecimal (16-lik) formatda chiqarish.