Pagini recente » Cod sursa (job #1758753) | Cod sursa (job #1637163) | Cod sursa (job #1987319) | Cod sursa (job #2858098) | Cod sursa (job #612034)
Cod sursa(job #612034)
#include <cstdio>
#include <cstring>
using namespace std;
#define maxn 10010
int t, n, i, j, k;
char s[maxn];
int v[maxn];
int verif(int st, int dr)
{
int poz;
while(1)
{
if(st==dr)
return 1-(v[st]%2);
if(st==dr-1)
return (v[st]==v[dr] || v[st]==v[dr]+11);
int diff=v[st]-v[dr];
if(diff!=0 && diff!=1 && diff!=10 && diff!=11)
return 0;
if(diff==1 || diff==11)
v[st+1]+=10;
if(diff>=10)
{
if(v[dr]==9)
return 0;
poz=dr-1;
while(v[poz]==0)
v[poz--]=9;
if(poz==st)
return 0;
--v[poz];
}
++st;
--dr;
}
return 1;
}
int main()
{
freopen("invers.in", "r", stdin);
freopen("invers.out", "w", stdout);
scanf("%d\n", &t);
while(t--)
{
memset(s, 0, sizeof(s));
scanf("%s", s+1);
n=strlen(s+1);
for(int i=1; i<=n; ++i)
v[i]=s[i]-'0';
if(v[1]!=1 || v[n]>0)
{
if(verif(1, n))
{
printf("DA\n");
continue;
}
}
if(n==1 || s[1]!='1')
{
printf("NU\n");
continue;
}
for(int i=1; i<n; ++i)
v[i]=s[i+1]-'0';
v[1]+=10;
if(verif(1, n-1))
printf("DA\n");
else
printf("NU\n");
}
return 0;
}