Pagini recente » Cod sursa (job #2364411) | Cod sursa (job #84699) | Cod sursa (job #1833169) | Cod sursa (job #2121686) | Cod sursa (job #1686127)
#include<fstream>
#include<cstring>
using namespace std;
ifstream f("invers.in");
ofstream g("invers.out");
int n,a[10005],b[10005];
bool solve(int st,int dr)
{
int i,dc;
while(1)
{
if(st==dr)
return (1-(a[st]%2));
if(st==dr-1)
return(a[st]==a[dr]||a[st]==a[dr]+11);
dc=a[st]-a[dr];
if(dc!=0&&dc!=1&&dc!=10&&dc!=11)
return 0;
if(dc==1||dc==11)
a[st+1]+=10;
if(dc>=10)
{
if(a[dr]==9)
return 0;
int i;
for(i=dr-1;a[i]==0;--i)
a[i]=9;
a[i]--;
if(i==st)
return 0;
}
++st;
--dr;
}
}
int main()
{
int t=0;
f>>t;
for(;t>0;t--)
{
char s[10005];
gets(s);
n=0;
for(int i=0;s[i];++i)
{
++n;
a[n]=b[n]=s[i]-'0';
}
if(n==1)
{
if(a[1]%2==1)
{
printf("NU\n");
continue;
}
printf("DA\n");
continue;
}
if(a[n]>0)
if(solve(1,n))
{
printf("DA\n");
continue;
}
if(a[1]!=1)
{
printf("NU\n");
continue;
}
for(int i=1;i<n;++i)
a[i]=b[i+1];
a[1]+=10;
if(solve(1,n-1))
printf("DA\n");
else
printf("NU\n");
}
return 0;
}