Pagini recente » Cod sursa (job #652330) | Cod sursa (job #2938202) | Cod sursa (job #240618) | Cod sursa (job #1115832) | Cod sursa (job #1483691)
#include <fstream>
#include <cstring>
using namespace std;
const int kMaxL = 10005;
ifstream fin("invers.in");
ofstream fout("invers.out");
bool Solve(const char *nr, int l, int r) {
if (l > r)
return false;
if (l == 1 && nr[r] == '0')
return false;
char aux[kMaxL];
for (int i = 1; i <= r; ++i)
aux[i] = nr[i] - '0';
while (l < r) {
if (aux[l - 1] > 1)
return false;
if (aux[l - 1] == 1)
aux[l] += 10;
if (aux[l] >= aux[r] + 10) {
--aux[r - 1];
for (int i = r - 1; aux[i] == -1; --aux[--i])
aux[i] = 9;
aux[r] += 10;
}
if (aux[l] < aux[r] || aux[r] == 19)
return false;
aux[l] -= aux[r];
++l;
--r;
}
if (l == r)
return aux[l] % 2 == 0 && aux[l - 1] < 2;
return aux[r] == 0;
}
int main() {
int T;
char nr[kMaxL];
fin >> T;
while (T--) {
fin >> (nr + 1);
int len = strlen(nr + 1);
if (Solve(nr, 1, len) || Solve(nr, 2, len))
fout << "DA\n";
else
fout << "NU\n";
}
return 0;
}