[c3] Suma kontrolna
Data zakończenia: 2024-04-19 16: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 32-bitowe słówa. Suma kontrolna jest 32-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 32-bitowych słów zapisanych w postaci ósemkowej.
Wyjście jest 32-bitowym słowem zapisanym w postaci 11-cyfrowej liczby zapisanej w systemie ósemkowym (w razie potrzeby uzupełniona zerami do 11 cyfr).
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 32-bitowe słówa. Suma kontrolna jest 32-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 32-bitowych słów zapisanych w postaci ósemkowej.
Wyjście jest 32-bitowym słowem zapisanym w postaci 11-cyfrowej liczby zapisanej w systemie ósemkowym (w razie potrzeby uzupełniona zerami do 11 cyfr).
Przykład
Wejście
11010600051 14741014276 07533045341 16253426326 13744064522 15574213111 10156655361 00172623351 05651405663 2517011333 5163400000Wyjście
00000062313