Logo
(追記) (追記ここまで)

29919번 - Sõnumi kaks kuju 다국어

시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초 1024 MB111100.000%

문제

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$\ldots$9 ja A$\ldots$F, kus 0$\ldots$9 väärtused on 0ドル \ldots 9$ ja A$\ldots$F väärtused 10ドル \ldots 15$. Kahekohalise 16-arvu $XY$ väärtus on 16ドル \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$\ldots$F. 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$\ldots$FF.
  3. Iga sisendsõnumis olev arv $N$ tuleb väljundsõnumisse kirjutada nii, et see algab 16-numbriga A. Kui arvu $N$ pikkus on kuni 15, kirjutatakse see A järele 16-arvuna 1$\ldots$F. Kui arvu $N$ pikkus on suurem kui 15, siis kirjutatakse numbri A järele number 0 ja selle järele $N$ pikkus 16-arvuna 10$\ldots$FF. Mõlemal juhul kirjutatakse pikkuse järele arv $N$ ise. Kui arv $N$ sisaldab järjest rohkem kui kaks nulli, siis tuleb need enne pakkida eelmises punktis kirjeldatud reegli järgi ja arvu $N$ 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 10ドル^{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

{ 10 555 2000 79 }

예제 출력 1

EA210A3555A32B3A279F

힌트

출처

Olympiad > Estonian Informatics Olympiad > 2019-20 > Preliminary Round 2번

(追記) (追記ここまで)

출처

대학교 대회

  • 사업자 등록 번호: 541-88-00682
  • 대표자명: 최백준
  • 주소: 서울시 서초구 서초대로74길 29 서초파라곤 412호
  • 전화번호: 02-521-0487 (이메일로 연락 주세요)
  • 이메일: contacts@startlink.io
  • 통신판매신고번호: 제 2017-서울서초-2193 호

AltStyle によって変換されたページ (->オリジナル) /