Pagini recente » Cod sursa (job #1224373) | Cod sursa (job #2212438) | Cod sursa (job #2629068) | Cod sursa (job #1102871) | Cod sursa (job #170832)
Cod sursa(job #170832)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int ok, ok2, N, n;
char A[10002], B[10002];
int calcul()
{
int i, j, k, nr = 1;
i = ok2; j = N - 1;
while ( nr )
{
if ( i==j )
{
if ( !(A[i] % 2) ) { nr = 0; ok = 1; break; }
else { nr = 0; break; }
}
if ( i + 1 == j )
{
if ( A[i] == A[j] || A[i] == A[j] + 11 )
{
nr = 0; ok = 1; break;
}
else { nr = 0; break; }
}
if ( A[i] == A[j] )
{
i++; j--;
}
else if ( A[i] == A[j] + 1 )
{
A[i + 1] += 10;
i++;
j--;
}
else if ( A[i] == A[j] + 10 )
{
if (A[j] == 9) { nr = 0; break; }
k = j - 1;
while (k >= i)
{
if (A[k] == 0) A[k--] = 9; else { A[k]--; break; }
}
if (k == i) { nr = 0; break; }
i++; j--;
}
else if ( A[i] == A[j] + 11 )
{
A[i + 1] += 10;
k = j - 1;
if (A[j] == 9) { nr = 0; break; }
while (k >= i)
{
if (A[k] == 0) A[k--] = 9; else { A[k]--; break; }
}
if (k == i) { nr = 0; break; }
i++; j--;
}
else nr = 0;
}
return 0;
}
int main()
{
int i, viz;
freopen("invers.in", "r", stdin);
freopen("invers.out", "w",stdout);
scanf("%d",&n);
while (n--)
{
viz = 1;
i = ok = 0;
scanf("%s ",A);
N = strlen(A);
if (A[0] == '0') break;
for (i = 0; i < N; i++)
{
A[i] = A[i] - '0';
}
ok2=0;
if (N == 1)
{
if (A[0] % 2 == 0) ok = 1;
}
else if (N == 2)
{
if (A[0] == A[1]) ok = 1;
else if (A[0] == 1 && (A[0] * 10 + A[1]) % 2 == 0) ok = 1;
}
else
{
if ( A[0] == 1 )
{
viz = 1;
if ( A[0] == 1 && A[N - 1] == 0 ) viz = 0;
for (i = 0; i < N; i++)
{
B[i] = A[i];
}
A[1] += 10;
ok2 = 1;
calcul();
if (!ok && viz )
{
ok2 = 0;
for (i = 0; i < N; i++) A[i] = B[i];
calcul();
}
}
else calcul();
}
if ( ok ) printf("DA\n"); else printf("NU\n");
}
return 0;
}