Cod sursa(job #249615)
Utilizator | Data | 28 ianuarie 2009 20:45:09 | |
---|---|---|---|
Problema | Invers | Scor | 0 |
Compilator | c | Status | done |
Runda | Arhiva de probleme | Marime | 2.37 kb |
#include <stdio.h>
#include <string.h>
int N,i,s,d,T,ok,j;
char v[10010];
int main()
{
freopen("invers.in","r",stdin);
freopen("invers.out","w",stdout);
scanf("%d",&T);
while(T--)
{
scanf("%s", v+1);
N=strlen(v+1);
for (i=1;i<=N;++i)
v[i]=v[i]-'0';
ok=0;
i=1;
if (N==1 && v[1]!=2)
printf("NU\n");
else
if (v[1]<v[2] && N==2)
printf("NU\n");
else
if (N==2 && v[1]!=v[2])
printf("Nu\n");
else
{
while (!ok)
{
s=i;
d=N-i+1;
//cazul 1
if (v[s]==v[d])
{
ok=1;
}
//cazul 2
else
if (v[s]==v[d]+1)
{
v[s]=0;
v[d]=0;
v[s+1]+=10;
}
//cazul 3
else
if (v[s]==v[d]+10)
{
v[s]=0;
v[d]=0;
v[d-1]--;
if (v[d]==9 && v[s]==19 || v[d-1]<0)
{
ok=0;
}
}
//cazul 4
else
if (v[s]-v[d]!=0 || v[s]-v[d]!=1 || v[s]-v[d]!=10 || v[s]-v[d]!=11)
{
ok=0;
}
i++;
}
if (ok) printf("DA\n");
else printf("NU\n");
}
}
return 0;
}