Cod sursa(job #204376)

Utilizator vlad.maneaVlad Manea vlad.manea Data 23 august 2008 11:51:05
Problema Cifra Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.79 kb
#include <stdio.h>
#include <string.h>

int T, N, ans, x, lg, nr, i;

int cate[32];

char sir[128];

int main()
{
	freopen("cifra.in", "r", stdin);
	freopen("cifra.out", "w", stdout);

	for (N = 1; N <= 20; ++N)
	{
		for (i = 1, ans = 0; i <= N; ++i)
		{
			x = i % 10;

			if (x == 1)
				ans += 1;
			else if (x == 2)
			{
				if (i % 4 == 1)
					ans += 2;
				else if (i % 4 == 2)
					ans += 4;
				else if (i % 4 == 3)
					ans += 8;
				else
					ans += 6;
			}
			else if (x == 3)
			{
				if (i % 4 == 1)
					ans += 3;
				else if (i % 4 == 2)
					ans += 9;
				else if (i % 4 == 3)
					ans += 7;
				else
					ans += 1;
			}
			else if (x == 4)
			{
				if (i % 2 == 1)
					ans += 4;
				else
					ans += 6;
			}
			else if (x == 5)
				ans += 5;
			else if (x == 6)
				ans += 6;
			else if (x == 7)
			{
				if (i % 4 == 1)
					ans += 7;
				else if (i % 4 == 2)
					ans += 9;
				else if (i % 4 == 3)
					ans += 3;
				else
					ans += 1;
			}
			else if (x == 8)
			{
				if (i % 4 == 1)
					ans += 8;
				else if (i % 4 == 2)
					ans += 4;
				else if (i % 4 == 3)
					ans += 2;
				else
					ans += 6;
			}
			else if (x == 9)
			{
				if (i % 2 == 1)
					ans += 9;
				else
					ans += 1;
			}

			ans %= 10;
		}

		cate[N] = ans;
	}

	scanf("%d\n", &T);

	for (; T--; )
	{
		scanf("%s\n", &sir);

		lg = strlen(sir);

		if (lg < 2)
			ans = cate[sir[lg-1] - '0'];
		else
		{
			nr = (sir[lg-2]-'0')*10+sir[lg-1]-'0';

			if (nr / 20 == 1)
				ans = 4;
			else if (nr / 20 == 2)
				ans = 8;
			else if (nr / 20 == 3)
				ans = 2;
			else if (nr / 20 == 4)
				ans = 6;
			else
				ans = 0;

			ans += cate[nr % 20];

			ans %= 10;
		}

		printf("%d\n", ans);
	}

	return 0;
}