Pagini recente » Cod sursa (job #2112723) | Cod sursa (job #2333896) | Cod sursa (job #1021903) | Cod sursa (job #2618354) | Cod sursa (job #345593)
Cod sursa(job #345593)
#include <stdio.h>
#define Nmax 10005
int n,t,s,d;
int v[Nmax];
char c;
int scad(int s,int i){
if(i==s) return 0;
if(v[i] > 0 ){ v[i]--; return 1; }
else {v[i]=9; return scad(s,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;
if( !scad(s,d-1) ) return 0;
} else
if(v[s] == v[d]+11){ v[s+1]+=10; if(!scad(s,d-1))return 0;}
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;
}