Array Checksum

Problem #17

Tags: arithmetic modulo hash loops c-1 c-0 implementation

Who solved this?

Back to English version

Kontrolne súčty sú malé hodnoty vypočítané z veľkého množstva dát na otestovanie konzistencie dát, t.j. kontrola chýb v dátach.

Napríklad ak Anna pošle nejaký súbor Bobovi, môže vypočítať kontrolný súčet a povedať ho Bobovi, a on si vypočíta kontrolný súčet súboru, ktorý prijal a porovná to s hodnotami od Anny.

Ďalší, ešte bežnejší príklad - všetky bankové karty, ktoré používate majú kontrolný súčet v poslednej číslici, takže zariadenia na kontrolu tohoto kontrolného súčtu, vám bránia použitiu nesprávnych čísel omylom (viac sa môžete dočítať v cvičení Luhnov Algoritmus).

Pre programovanie niekoľkých ďalších úloh použijeme podobný spôsob, aby sme skontrolovali či je výsledok polí (array) správny alebo nie. Aby sme predišli problémom s podobnými úlohami, poďme si teraz precvičiť algoritmus počítania kontrolných súčtov a to je náš

Problémový výrok

Dostanete pole pre ktoré vypočítate kontrolný súčet. Výpočet urobte nasledovne: pre každý prvok poľa (od začiatku) pridajte tento prvok do premennej výsledok a vynásobte túto sumu číslom 113 - táto nová hodnota, modulo 10000007 bude ďalšia hodnota výsledku, a tak ďalej.

Pre detailnejšie vysvetlenie si prečítajte článok o kontrolnom súčte. Tam môžete nájsť aj príklad pre výpočty tejto kontrolnej sumy.

Vstupné dáta budú obsahovať dĺžku poľa v prvom riadku.
Samotné hodnoty budú nasledovať v druhom riadku a budú oddelené medzerami.
Odpoveď by mala obsahovať jednu hodnotu - vypočítaný kontrolný súčet.

Príklad:

vstupné dáta:
6
3 1 4 1 5 9

odpoveď:
8921379

Všetky vstupné hodnoty sú medzi 0 a 1,000,000,000 - uistite sa že nedôjde k presahu hodnôt počas výpočtov!

You need to login to get test data and submit solution.