[c3] Suma kontrolna
Data zakończenia: 2024-04-19 14:00
Języki:
c
Limit czasu: 1.0 s
Limit pamięci: 5 MB
Cel
Zadanie na operacje bitowe, wejście i wyjście formatowane oraz formaty wejścia i wyjścia.
Problem
Naukowiec pisał program, który gromadził dużą ilość danych. Ponieważ zachodziła obawa, że może dochodzić do przekłamywania pojedynczych bitów, więc stwierdził, że do każdej porcji danych będzie dołączał prostą sumę kontrolną.
Zadanie
Napisz program, który będzie wyliczał sumę kontrolną dla danych w następujący sposób:
Dane podzielone są na 64-bitowe słowa. Suma kontrolna jest 64-bitowym słowem w którym i-ty bit jest jedynką wtedy i tylko wtedy, jeśli w nieparzystej ilości słów danych i-ty bit jest jedynką. (Innymi słowy suma kontrolna jest otrzymywana w wyniku wykonania operacji różnicy symetrycznej (XOR) na bitach słów danych.)
Danymi jest ciąg 64-bitowych słów zapisanych w postaci ósemkowej.
Wyjście jest 64-bitowym słowem zapisanym w postaci 22-cyfrowej liczby zapisanej w systemie ósemkowym (w razie potrzeby uzupełniona zerami do 22 cyfr).
Uwaga: można założyć, że typ unsigned long jest typem 64-bitowym.
Przykład
Wejście
Zadanie na operacje bitowe, wejście i wyjście formatowane oraz formaty wejścia i wyjścia.
Problem
Naukowiec pisał program, który gromadził dużą ilość danych. Ponieważ zachodziła obawa, że może dochodzić do przekłamywania pojedynczych bitów, więc stwierdził, że do każdej porcji danych będzie dołączał prostą sumę kontrolną.
Zadanie
Napisz program, który będzie wyliczał sumę kontrolną dla danych w następujący sposób:
Dane podzielone są na 64-bitowe słowa. Suma kontrolna jest 64-bitowym słowem w którym i-ty bit jest jedynką wtedy i tylko wtedy, jeśli w nieparzystej ilości słów danych i-ty bit jest jedynką. (Innymi słowy suma kontrolna jest otrzymywana w wyniku wykonania operacji różnicy symetrycznej (XOR) na bitach słów danych.)
Danymi jest ciąg 64-bitowych słów zapisanych w postaci ósemkowej.
Wyjście jest 64-bitowym słowem zapisanym w postaci 22-cyfrowej liczby zapisanej w systemie ósemkowym (w razie potrzeby uzupełniona zerami do 22 cyfr).
Uwaga: można założyć, że typ unsigned long jest typem 64-bitowym.
Przykład
Wejście
0311731074315342642547 1630632207154417114151 1145112717756454156121 0611252616605272112112 1433503714644343417451 0501766572547506654272 1406670757545654240762 725057024317170524743 557203054112127600174 466611177402210004124Wyjście
0155213744353325431277