아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

Sõnumi kaks kuju

시간 제한1초메모리 제한1024 MB

요약
최대 100개의 큰 정수로 된 메시지를 16진수 니블로 압축하고, 3개 이상 연속된 0은 런렝스 부호화한다.
난이도

보통10점 중 4점

유형
문자열, 구현, 시뮬레이션
정답자
아직 제출이 없습니다

문제

Juku osaleb õpilassatelliidi projektis ja tema hoole alla on antud satelliidi juhtimine maa pealt saadetud sõnumitega. Sõnumid koosnevad sõnumi alguse ja lõpu märgist (vastavalt '{' ja '}') ja tühikutega eraldatud täisarvudest. Juku muretseb aeglase andmeside pärast ja otsustab, et sõnumitele tuleb anda lühem kuju.

Ta teab, et tekstikujul olevaid numbreid esitatakse ühe baidi ehk 8 bitiga. Aga kui esitada üks number kuueteistkümnendsüsteemis, siis võtab see ruumi ainult 4 bitti. Lisaks on 16-numbrite hulgas veel väärtuseid, mida saab sõnumi pakkimiseks ära kasutada. (Meeldetuletuseks: 16-süsteemis kasutatakse numbritena 0…\ldots9 ja A…\ldotsF, kus 0…\ldots9 väärtused on 0…90 \ldots 9 ja A…\ldotsF väärtused 10…1510 \ldots 15. Kahekohalise 16-arvu XYXY väärtus on 16⋅X+Y16 \cdot X + Y.)

Ta otsustab pakkida sõnumeid järgmiste reeglite järgi:

  1. Sõnumi alguse tähiseks on 16-number E ja lõpu tähiseks 16-number F.
  2. Kui sisendsõnumis olevas arvus on järjest 3 kuni 15 nulli, kirjutatakse väljundsõnumisse nende asemele 16-number B ja selle järele nullide jada pikkus 16-arvuna 3…\ldotsF. Kui nullide jada pikkus on suurem kui 15, siis kirjutatakse numbri B järele number 0 ja selle järele jada pikkus 16-arvuna 10…\ldotsFF.
  3. Iga sisendsõnumis olev arv NN tuleb väljundsõnumisse kirjutada nii, et see algab 16-numbriga A. Kui arvu NN pikkus on kuni 15, kirjutatakse see A järele 16-arvuna 1…\ldotsF. Kui arvu NN pikkus on suurem kui 15, siis kirjutatakse numbri A järele number 0 ja selle järele NN pikkus 16-arvuna 10…\ldotsFF. Mõlemal juhul kirjutatakse pikkuse järele arv NN ise. Kui arv NN sisaldab järjest rohkem kui kaks nulli, siis tuleb need enne pakkida eelmises punktis kirjeldatud reegli järgi ja arvu NN pikkuseks ei arvestata mitte algse arvu, vaid pakkimise tulemuse pikkust.
  4. Kui pakitud sõnumis on paaritu arv 16-numbreid, siis tuleb kõige lõppu (F järele) lisada D.

Koosta Jukule sõnumite pakkimiseks programm, mis loeb sisendfailist saadetava sõnumi ja kirjutab väljundfaili selle pakkimise tulemuse tekstilisel kujul.

입력

Tekstifailis on täpselt üks rida, millel on üks edastatav sõnum. Sõnumis on kuni 100 positiivset arvu, mis on kõik väiksemad kui 1025610^{256}.

출력

Tekstifaili ainsale reale väljastada pakitud sõnum tekstilisel kujul nii, et iga 16-number on esitatud ühe märgina. Seda tuleb teha vastuse loetavuse huvides, sest kui nendest 16-arvudest panna kokku päris baidid, siis on tulemus inimesele raske lugeda.

예제1

  1. 예제 1

    입력
    { 10 555 2000 79 }
    
    예상 출력
    EA210A3555A32B3A279F