Pagini recente » Cod sursa (job #204661) | Cod sursa (job #3242312) | Cod sursa (job #535755) | Cod sursa (job #1621288) | Cod sursa (job #345588)
Cod sursa(job #345588)
#include <stdio.h>
#define Nmax 10005
int n,t,s,d;
int v[Nmax];
char c;
void scad(int i){
if(v[i] > 0 ) v[i]--;
else v[i]=9, scad(i-1);
}
int merge(int x,int y){
int s=x,d=y;
while( ! ( s==d || d==s+1 ) ){
if(v[s] == v[d]) ; else
if(v[s] == v[d]+1) v[s+1]+=10; else
if(v[s] == v[d]+10){
if(v[d]==9) return 0;
scad(d-1);
} else
if(v[s] == v[d]+11) v[s+1]+=10, scad(d-1);
else return 0;
s++; d--;
}
if(s == d) if((v[s] & 1) == 0) return 1; else return 0;
if( v[s] == v[d] || v[s]==v[d]+11 ) return 1;
return 0;
}
int bun(){
if( merge(1,n) ) return 1;
if(v[1]==1){
v[2]+=10; // dc prima cifra e un 1 obtinut prin transport
if( merge(2,n) ) return 1;
}
return 0;
}
int main(){
freopen("invers.in","r",stdin);
freopen("invers.out","w",stdout);
scanf("%d\n",&t);
for(; t; t--){
for(n=0,scanf("%c",&c); c!='\n' && !feof(stdin); scanf("%c",&c))
v[++n]=c-'0';
if( bun() ) printf("DA\n");
else printf("NU\n");
}
fclose(stdin); fclose(stdout);
return 0;
}