Pagini recente » Cod sursa (job #1682813) | Cod sursa (job #1413549) | Cod sursa (job #1278703) | Cod sursa (job #1371449) | Cod sursa (job #70791)
Cod sursa(job #70791)
using namespace std;
#include<fstream>
#include<stdio.h>
#define Nmax 10005
int V[Nmax];
int A[Nmax];
char s[Nmax];
int verif(int st,int dr)
{
int i;
while(st != dr-1 && st!=dr)
{
if(A[st] - A[dr] == 0);
else
if(A[st] - A[dr] == 1)
A[st+1]+=10;
else
if(A[st] - A[dr] == 10)
{
for(;;);
if(A[st]==19)
return 0;
i=dr-1;
while(A[i]==0)
{
A[i]=9;
i--;
}
A[i]--;
if(i==st)
{
for(;;);
return 0;
}
}
else
if(A[st] - A[dr] == 11)
{
A[st+1]+=10;
i=dr-1;
while(A[i]==0)
{
A[i]=9;
i--;
}
A[i]--;
}
else
return 0;
st++;dr--;
}
if(st==dr && A[st]%2 )
return 0;
if(st==dr-1 && A[st]!=A[dr] && A[st]-A[dr]!=11)
return 0;
return 1;
}
int main()
{
ifstream fin("invers.in");
ofstream fout("invers.out");
int T,i,N;
fin>>T;
while(T--)
{
fin>>s;
for(N=0; s[N]; N++)
V[N+1]= A[N+1]= s[N] - '0';
if( verif(1,N) )
fout<<"DA\n";
else
if( V[1]==1 && N>1 )
{
for(i=2;i<=N;i++)
A[i-1]=V[i];
A[1]+=10;
if(verif(1,N-1))
fout<<"DA\n";
else
fout<<"NU\n";
}
else
fout<<"NU\n";
}
fin.close();
fout.close();
return 0;
}