Pagini recente » Cod sursa (job #684769) | Cod sursa (job #2766897) | Cod sursa (job #269715) | Cod sursa (job #1691880) | Cod sursa (job #478034)
Cod sursa(job #478034)
#include<cstdio>
#include<cstring>
using namespace std;
const char iname[]="invers.in";
const char oname[]="invers.out";
const int maxn=10005;
char s[maxn];
int n,a[maxn],i,t;
bool test(char *s,int n)
{
int i,j,k;
for(i=1,j=n;1;++i,--j)
{
if(i==j)
return s[i]%2==0;
if(j-i==1)
return (s[i]==s[j]+11||s[i]==s[j]);
if(s[i]==s[j]+1||s[i]==s[j]+11)
s[i+1]+=10;
if(s[i]==s[j]+11||s[i]==s[j]+10)
{
if(s[j]==9)
return false;
for(s[k=j-1]--;s[k]<0&&k>=i;)
s[k]+=10,s[--k]--;
if(k==i)
return false;
}
if(s[i]-s[j]<0||(s[i]-s[j]>1&&s[i]-s[j]<10)||(s[i]-s[j]>11))
return false;
}
}
bool calc()
{
for(n=1;s[n]&&s[n]!='\n';++n)
s[n]-='0';
--n;
char s2[maxn];
memcpy(s2,s,sizeof(s2));
if((s2[1]!=1||s2[n]!=0))
if(test(s2,n))
return true;
if(n==1||s[1]!=1)
return false;
s[2]+=10;
if(test(s+1,n-1))
return true;
return false;
}
int main()
{
freopen(iname,"r",stdin);
freopen(oname,"w",stdout);
scanf("%d\n",&t);
while(t--)
{
fgets(s+1,sizeof(s),stdin);
if(calc())
printf("DA\n");
else
printf("NU\n");
}
}