Mai intai trebuie sa te autentifici.
Cod sursa(job #169950)
Utilizator | Data | 2 aprilie 2008 11:34:50 | |
---|---|---|---|
Problema | Invers | Scor | 30 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 1.24 kb |
#include<cstdio>
#include<cstring>
int n,t,i,st;
char a[50001],b[50001];
int solve(int st,int dr)
{
if(st>dr) return 0;
while(st+1<dr)
{
if(b[st]>19) return 0;
if(b[dr]<0) {b[dr]+=10;b[dr-1]--;}
if(b[st]==b[dr]) {st++;dr--;}
else
if(b[st]-1==b[dr]){st++;dr--;b[st]+=10;}
else
if(b[st]<=18 && b[st]-10==b[dr]){st++;dr--;b[dr]--;}
else
if(b[st]-11==b[dr]) {st++;dr--;b[dr]--;b[st]+=10;}
else return 0;
}
if(st==dr) return a[st]%2==0 && a[st]>=0 && a[st]<=18;
else{
if(b[dr]<0) b[dr]+=10,b[st]--;
if(b[st]<0 || b[st]>19) return 0;
if(b[st]==b[dr]) return 1;
else
if(b[st]-11==b[dr]) return 1;
else return 0;}
}
int main()
{
freopen("invers.in","r",stdin);
freopen("invers.out","w",stdout);
scanf("%d ",&t);
for(;t;t--){
scanf(" %s ",a);
n=strlen(a);
for(i=0;i<n;i++){a[i]-='0';b[i]=a[i];}
st=0;
while(a[st]==0 && st<n) st++;
if(st==n) st--;
if(solve(st,n-1))
goto da;
else
if(a[st]==1 && st+1<n){
memcpy(b,a,sizeof(b));
st++;
b[st]+=10;
if(solve(st,n-1))
goto da;
else
goto nu;
}
else
goto nu;
da:
printf("DA\n");
continue;
nu:
printf("NU\n");
}
fclose(stdout);
return 0;
}