Pagini recente » Cod sursa (job #2829040) | Cod sursa (job #2028740) | Cod sursa (job #277506) | Istoria paginii runda/simulareg_1 | Cod sursa (job #170884)
Cod sursa(job #170884)
#include<cstdio>
#include<cstring>
int n,t,i;
char a[20001];
int b[20001];
int solve(int st,int dr)
{
int j;
while(st!=dr && st+1!=dr)
{
if(b[st]==b[dr])
{
st++;
dr--;
}
else
if(b[st]==b[dr]+1)
{
st++;
dr--;
b[st]+=10;
}
else
if(b[st]==b[dr]+10)
{
if(b[dr]==9)
return 0;
st++;
dr--;
b[dr]--;
j=dr;
while(j>st && b[j]<0){
b[j]=9;
b[j-1]--;
j--;}
if(j==st && b[st]<0)
return 0;
}
else
if(b[st]==b[dr]+11)
{
if(b[dr]==9)
return 0;
st++;
dr--;
b[dr]--;
b[st]+=10;
j=dr;
while(j>st && b[j]<0){
b[j]=9;
b[j-1]--;
j--;}
if(j==st && b[st]<0)
return 0;
}
else
return 0;
}
if(st==dr)
return b[st]%2==0;
return b[st]==b[dr] || b[st]-11==b[dr];
}
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';
b[i]=a[i];
}
if(n==1)
if(a[0]%2==0)
printf("DA\n");
else
printf("NU\n");
else
if(n==2)
if(a[0]==a[1])
printf("DA\n");
else
if(a[0]==1 && (a[0]*10+a[1])%2==0)
printf("DA\n");
else
printf("NU\n");
else
if((a[0]!=1 || (a[0]==1 && a[n-1]!=0)) && solve(0,n-1))
printf("DA\n");
else
if(a[0]==1)
{
for(i=0;i<n;i++)b[i]=a[i];
b[1]+=10;
if(solve(1,n-1))
printf("DA\n");
else
printf("NU\n");
}
else
printf("NU\n");
}
fclose(stdout);
return 0;
}