Cod sursa(job #969242)

Utilizator andy1496Casu-Pop Andrei andy1496 Data 3 iulie 2013 21:23:26
Problema Cifra Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.35 kb
#include <cstdio>
#include <stdlib.h>
using namespace std;
 	int T,i,cifra,k;
	char *v = (char*) calloc (103,sizeof(char));
	char x;

int main(){
	
	freopen("cifra.in", "r", stdin);
	freopen("cifra.out", "w", stdout);
	
    scanf ("%d", &T);
	scanf ("%c", &x);
   	while (T>0){
   		cifra=0;
		scanf ("%c", &v[0]);
		i=1;
		while (v[i-1]!='\n'){
			scanf("%c", &v[i]);
			i++;
		}
		i=i-2;
		if (i==0){
			while (v[i]!=0){
			switch (v[i]){
   				case '1': cifra=(cifra+1)%10; break;
   				case '2': cifra=(cifra+4)%10; break;
   				case '3': cifra=(cifra+7)%10; break;
   				case '4': cifra=(cifra+6)%10; break;
   				case '5': cifra=(cifra+5)%10; break;
   				case '6': cifra=(cifra+6)%10; break;
   				case '7': cifra=(cifra+3)%10; break;
   				case '8': cifra=(cifra+6)%10; break;
   				case '9': cifra=(cifra+9)%10; break;
   			}
   			v[i]--;
   		}
		}
		else {
			switch (v[i-1]){
   				case '1': cifra=7; break;
   				case '2': cifra=4; break;
   				case '3': cifra=1; break;
   				case '4': cifra=8; break;
   				case '5': cifra=5; break;
   				case '6': cifra=2; break;
   				case '7': cifra=9; break;
   				case '8': cifra=6; break;
   				case '9': cifra=3; break;
   				case '0': cifra=0; break;
   			}
   			if (v[i-1]%2==0){
   				while (v[i]!=0){
   				switch (v[i]){
   				case '1': cifra=(cifra+1)%10; break;
   				case '2': cifra=(cifra+4)%10; break;
   				case '3': cifra=(cifra+7)%10; break;
   				case '4': cifra=(cifra+6)%10; break;
   				case '5': cifra=(cifra+5)%10; break;
   				case '6': cifra=(cifra+6)%10; break;
   				case '7': cifra=(cifra+3)%10; break;
   				case '8': cifra=(cifra+6)%10; break;
   				case '9': cifra=(cifra+9)%10; break;
   			}
   			v[i]--;
   		}
   			}
   			else {
   				while (v[i]!=0) {
   				switch (v[i]){
   				case '1': cifra=(cifra+1)%10; break;
   				case '2': cifra=(cifra+6)%10; break;
   				case '3': cifra=(cifra+3)%10; break;
   				case '4': cifra=(cifra+6)%10; break;
   				case '5': cifra=(cifra+5)%10; break;
   				case '6': cifra=(cifra+6)%10; break;
   				case '7': cifra=(cifra+7)%10; break;
   				case '8': cifra=(cifra+4)%10; break;
   				case '9': cifra=(cifra+9)%10; break;
   			}
   			v[i]--;
   		}
   		}
		}
		printf ("%d", cifra);
		printf ("\n");
   		T--;
   	}
   	
    return 0;
}