Pagini recente » Cod sursa (job #2456727) | Cod sursa (job #1316580) | Cod sursa (job #1119322) | Cod sursa (job #1120408) | Cod sursa (job #3913)
Cod sursa(job #3913)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define cm 10010
char sir[cm];
int t,s,d,v[cm],vld;
int main()
{
freopen("invers.in","r",stdin);
freopen("invers.out","w",stdout);
scanf("%d\n",&t);
for (;t;--t)
{
scanf("%s\n",sir);
d=strlen(sir)-1;
for (s=0;s<=d;s++)
v[s]=sir[s]-'0';
s=0,vld=1;
while (d-s>1)
{
if (v[s]==v[d])
{
++s,--d;
continue;
}
if (v[s]==v[d]+1)
{
v[s+1]+=10;
++s,--d;
continue;
}
if (v[s]==v[d]+10)
{
/* if (v[d-1]==0)
{
vld=0;
break;
}
else */
v[d-1]--;
++s,--d;
continue;
}
if (v[s]==v[d]+11)
{
v[s+1]+=10;
/* if (v[d-1]==0)
{
vld=0;
break;
}
else*/
v[d-1]--;
++s,--d;
continue;
}
vld=0;
break;
}
if (s==d)
if (v[s]%2==1)
vld=0;
if (s==d-1)
if ((v[s]!=v[d])&&(v[s]!=v[d]+11))
vld=0;
if ((v[0]==1)&&(vld==0)&&(strlen(sir)>1))
{
s=1,d=strlen(sir)-1,v[1]+=10;
vld=1;
while (d-s>1)
{
if (v[s]==v[d])
{
++s,--d;
continue;
}
if (v[s]==v[d]+1)
{
v[s+1]+=10;
++s,--d;
continue;
}
if (v[s]==v[d]+10)
{
/* if (v[d-1]==0)
{
vld=0;
break;
}
else */
v[d-1]--;
++s,--d;
continue;
}
if (v[s]==v[d]+11)
{
v[s+1]+=10;
/* if (v[d-1]==0)
{
vld=0;
break;
}
else*/
v[d-1]--;
++s,--d;
continue;
}
vld=0;
break;
}
if (s==d)
if (v[s]%2==1)
vld=0;
if (s==d-1)
if ((v[s]!=v[d])&&(v[s]!=v[d]+11))
vld=0;
}
if (vld==0)
printf("NU\n");
else
printf("DA\n");
}
return 0;
}