Pagini recente » Cod sursa (job #1862206) | Cod sursa (job #2804711) | Cod sursa (job #2673708) | Cod sursa (job #1789403) | Cod sursa (job #497997)
Cod sursa(job #497997)
#include <cstdio>
#define nmax 10010
char ss[nmax];
int n, l, v[nmax];
int main()
{
freopen("invers.in","r",stdin);
freopen("invers.out","w",stdout);
scanf("%d\n",&n);
int i, j, ok, tr, d, c, s, tn;
for (i=1; i<=n; i++)
{
fgets(ss,nmax,stdin);
for (l=1; ss[l-1]>='0' && ss[l-1]<='9'; l++) v[l]=ss[l-1]-'0';
l--;
ok=0;
if (v[1]!=1 || (v[1]==1 && v[l]==1))
{
tr=0;
ok=1;
tn=0;
for (s=1, d=l; s<=d; s++, d--)
{
if (d==s)
{
v[d]-=tr;
tn=0;
if (v[d]<0) v[d]=0;
if (v[d]%2) ok=0;
break;
}
c=tn*10+v[d];
if (c==19) c=9;
if (c>9 || (c==9 && tn==1))
{
v[d-1]--;
if (v[d-1]<0) v[d-1]=9;
tr=1;
} else tr=0;
tn=v[s]-c;
if (v[s]<c) tn+=10;
if (tn!=1 && tn)
{
ok=0;
break;
}
if (s+1==d && v[s]!=v[d]) ok=0;
}
if (tn) ok=0;
}
if (!ok)
{
for (j=0; j<l; j++) v[j+1]=ss[j]-'0';
if (v[1]==1 && l>1)
{
ok=1;
tr=0;
tn=1;
for (s=2, d=l; s<=d; s++, d--)
{
if (d==s)
{
v[d]-=tr;
tn=0;
if (v[d]<0) v[d]=0;
if (v[d]%2) ok=0;
break;
}
c=tn*10+v[d];
if (c==19) c=9;
if (c>9 || (c==9 && tn==1))
{
v[d-1]--;
if (v[d-1]<0) v[d-1]=9;
tr=1;
} else tr=0;
tn=v[s]-c;
if (v[s]<c) tn+=10;
if (tn!=1 && tn)
{
ok=0;
break;
}
if (s+1==d && v[s]!=v[d]) ok=0;
}
if (tn) ok=0;
}
}
if (ok) printf("DA\n"); else printf("NU\n");
}
}