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