Pagini recente » Cod sursa (job #125719) | Monitorul de evaluare | Cod sursa (job #1229868) | Cod sursa (job #82721) | Cod sursa (job #70764)
Cod sursa(job #70764)
#include<stdio.h>
int V[10005];
int A[10005];
int verif(int st,int dr)
{
int i;
if(dr-st+1==0)
return 1;
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)
{
if(A[st]==19)
return 0;
i=dr-1;
while(i>st && A[i]==0)
{
A[i]=9;
i--;
}
A[i]--;
if(i==st)
return 0;
}
else
if(A[st] - A[dr] == 11)
{
i=dr-1;
while(A[i]==0)
{
A[i]=9;
i--;
}
A[i]--;
if(A[st] - A[dr] == 11)
A[st+1]+=10;
}
else
return 0;
st++;dr--;
}
if(st==dr && A[st]%2 )
return 0;
else
if(st==dr-1 && A[st]!=A[dr] && A[st]-A[dr]!=11)
return 0;
return 1;
}
int main()
{
FILE *fin=fopen("invers.in","r"),
*fout=fopen("invers.out","w");
int T,i,N;
char ch;
fscanf(fin,"%d\n",&T);
while(T--)
{
N=0;
ch=fgetc(fin);
while(ch!='\n' && ch!=EOF)
{
V[++N]= ch-'0';
if(N==1 && V[1]==0) N--;
A[N]=V[N];
ch=fgetc(fin);
}
// if(N>1 && V[1]==0)
// fprintf(fout,"NU\n");
// else
if( verif(1,N) )
fprintf(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))
fprintf(fout,"DA\n");
else
fprintf(fout,"NU\n");
}
else
fprintf(fout,"NU\n");
}
fclose(fin);
fclose(fout);
return 0;
}