Problema do checksum
Enunciado único
Os algoritmos de verificação tipo Checksum trabalham executando operações sobre um conjunto de dados e são úteis para verificar se este conjunto de dados se permaneceu íntegro.
Este problema considera o seguinte algoritmo de checksum onde cada par de bytes é chamado de P e elemento do par é chamado de B. Caso a entrada possua um número impar de bytes, para efeitos do algoritmo o último par é composto pelo último byte e o byte 0.
- Para cada par P
- Executa-se uma contagens dos bits 1 de cada elemento B chegando-se a um valor X.
- O valor X de cada byte B de P é operado bit-a-bit em operação de e chegando-se a um valor Y
- O resto da divisão de Y por 11 deverá ser somado e acumulado em L.
- Ao final deve-se somar a L a quantidades de bytes B processados resultando em W.
O resultado checksum é W que deverá suportar o valor de até 100 dígitos.
Dificuldade 1
Faça um programa que receberá um número N e N cadeias de caracteres K (máximo de 200 caracteres). Cada K representará o caminho de um arquivo para o qual deve ser calculado o checksum segundo algoritmo descrito acima. A entrada termina quando for encontrada a cadeia "0" (sem as aspas).
A saída deverá ser dada na saída padrão e deverá ser o número W descrito no algoritmo acima.
Exemplo 1
Entrada
exemplo1.in exemplo2.in exemplo3.in exemplo4.in exemplo5.in exemplo6.in 0
Saída
200 401 601 827 38762 51455
Dificuldade 2
Faça um programa que receberá um número N e N cadeias de caracteres K (máximo de 200 caracteres). Cada K representará o caminho de um arquivo para o qual deve ser calculado o checksum segundo algoritmo descrito acima. A entrada termina quando for encontrada a cadeia "0" (sem as aspas).
Para cada K deve ser gravado um aquivo K.checksum que deverá conter o número W representado em caracteres ASCII.