Cod sursa(job #168515)

Utilizator razvi9Jurca Razvan razvi9 Data 31 martie 2008 16:09:04
Problema Invers Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.36 kb
#include<cstdio>
#include<cstring>
int n,st,dr,t,i;
char a[10001];
int main()
{
	freopen("invers.in","r",stdin);
	freopen("invers.out","w",stdout);
	scanf("%d ",&t);
	for(;t;t--){
		gets(a);
		n=strlen(a);
		for(i=0;i<n;i++)
			a[i]-='0';
		if(n==1){ 
			if(a[0]%2==0) printf("DA\n");
			else printf("NU\n");
			continue;}
		st=0;dr=n-1;
		while(st<dr)
			if(a[st]>18 || a[dr]>18) break;
			else
				if(a[st]==a[dr]) st++,dr--;
				else
					if(a[st]-10==a[dr]) {st++;dr--;a[dr]--;}
					else
						if(a[st]-1==a[dr]) {st++;dr--;a[st]+=10;}
						else
							if(a[st]-11==a[dr]){st++;dr--;a[st]+=10;a[dr]--;}
							else break;
		if(st==dr)
			if(a[st]%2) goto v2;
			else printf("DA\n");
		else
			if(a[st]==a[dr] || a[st]-11==a[dr])
				printf("DA\n");
			else
v2:
			if(a[0]!=1) printf("NU\n");
			else{
			st=1;dr=n-1;a[st]+=10;
			while(st<dr)
				if(a[st]>18 || a[dr]>18) break;
				else
					if(a[st]==a[dr]) st++,dr--;
					else
						if(a[st]-10==a[dr]) {st++;dr--;a[dr]--;}
						else
							if(a[st]-1==a[dr]) {st++;dr--;a[st]+=10;}
							else
								if(a[st]-11==a[dr]){st++;dr--;a[st]+=10;a[dr]--;}
								else break;
			if(st==dr)
				if(a[st]%2) printf("NU\n");
				else printf("DA\n");
			else
				if(a[st]==a[dr] || a[st]-11==a[dr])
					printf("DA\n");
				else printf("NU\n");}
	}
	fclose(stdout);
	return 0;
}