UVa : 128 (Software CRC)



// http://uva.onlinejudge.org/external/1/128.html

// @BEGIN_OF_SOURCE_CODE

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <string>
#include <cctype>
#include <stack>
#include <queue>
#include <list>
#include <vector>
#include <map>
#include <sstream>
#include <cmath>
#include <bitset>
#include <utility>
#include <set>
#include <numeric>
#define INT_MAX 2147483647
#define INT_MIN -2147483647
#define pi acos(-1.0)
#define N 1000000
#define LL unsigned long long
using namespace std;


int main ()
{
	char input [2000];

	while ( gets (input) && input [0] != '#' ) {
		LL sum = 0;

		int len = strlen (input);

		for ( int i = 0; i < len; i++ ) {
			sum <<= 8;
			sum %= 34943;
			sum += input [i];
			sum %= 34943;
		}

		sum <<= 16;
		sum %= 34943;
		int hexa = (34943 - sum) % 34943;

		printf ("%02X %02X\n", hexa >> 8, hexa % 256);

	}

	return 0;
}

// @END_OF_SOURCE_CODE

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s