Pagini recente » Cod sursa (job #1866675) | Cod sursa (job #731720) | Cod sursa (job #1471232) | Cod sursa (job #1094866) | Cod sursa (job #1686140)
#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;
char s[3];
f.getline(s,3);
while(t)
{
t--;
char s[10005];
f.getline(s,10005);
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)
{
g<<"NU\n";
continue;
}
g<<"DA\n";
continue;
}
if(a[n]>0)
if(solve(1,n))
{
g<<"DA\n";
continue;
}
if(a[1]!=1)
{
g<<"NU\n";
continue;
}
for(int i=1;i<n;++i)
a[i]=b[i+1];
a[1]+=10;
if(solve(1,n-1))
g<<"DA\n";
else
g<<"NU\n";
}
return 0;
}