Pagini recente » Cod sursa (job #2171476) | Cod sursa (job #171336)
Cod sursa(job #171336)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int N, T, ok, poz;
char a[10001], b[10001];
void calcul()
{
int i, j, k;
i = poz; j = N - 1;
while (1)
{
if (i == j)
{
if (!(a[i] % 2)) {ok = 1; break;}
else break;
}
if (i == j - 1)
{
if (a[i] == a[j] || (a[i] == a[j] + 11)) { ok = 1; break;}
else break;
}
if (a[i] == a[j]) {i++; j--;}
else if (a[i] == a[j] + 1)
{
i++;
j--;
a[i] += 10;
}
else if (a[i] == a[j] + 10)
{
if (a[j] == 9) break;
k = j - 1;
while (k >= i)
{
if (!a[k]) a[k--] = 9;
else {a[k]--; break;}
}
if (k == i) break;
i++; j--;
}
else if (a[i] == a[j] + 11)
{
if (a[j] == 9) break;
a[i + 1] += 10;
k = j - 1;
while (k >= i)
{
if (!a[k]) a[k--] = 9;
else {a[k]--; break;}
}
if (k == i) break;
i++; j--;
}
else break;
}
}
int main()
{
freopen("invers.in","r",stdin);
freopen("invers.out","w",stdout);
int i, viz;
scanf("%d\n",&T);
while (T--)
{
ok = i = poz = 0;
scanf("%s",a);
N = strlen(a);
if (a[0] == '0') break;
for (i = 0; i < N; i++) a[i] = a[i] - '0';
if (N == 1) {if (!(a[0] % 2)) ok = 1;}
else if (N == 2)
{
if (a[0] == a[1] || (a[0] == 1 && !(a[1] % 2))) ok = 1;
}
else
{
if (a[0] == 1)
{
viz = 1;
if (a[N - 1] == 0) viz = 0;
for (i = 0; i < N; i++) b[i] = a[i];
a[1] += 10;
poz = 1;
calcul();
if (!ok && viz)
{
poz = 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;
}