Pagini recente » Cod sursa (job #334101) | Cod sursa (job #1661195) | Cod sursa (job #1347555) | Cod sursa (job #2968417) | Cod sursa (job #1593893)
#include <bits/stdc++.h>
using namespace std;
const int nmax = 10009;
int i , n , T;
int nr[nmax];
string s;
bool run(int L)
{
int i , R = n;
memset(nr , 0 , sizeof(nr));
for (i = 0 ; i < n ; ++i)
nr[i + 1] = s[i] - '0';
if (L == 1 && nr[n] == 0) return false;
while (L < R)
{
if (nr[L - 1] > 1) return false;
if (nr[L - 1] == 1) nr[L] += 10;
if (nr[L] >= nr[R] + 10)
{
for (i = R - 1 ; i ; --i)
if (nr[i] > 0)
{
nr[i]--;
break;
}
else nr[i] = 9;
nr[R] += 10;
}
if (nr[L] < nr[R]) return false;
if (nr[R] == 19) return false;
nr[L] -= nr[R];
L++ , R--;
}
if (L == R)
{
if (nr[L] % 2 == 1) return false;
if (nr[L - 1] >= 2) return false;
return true;
}
else
{
if (nr[R] == 0) return true;
return false;
}
}
int main()
{
ifstream fin("invers.in");
ofstream fout("invers.out");
fin >> T;
for (i = 1 ; i <= T ; ++i)
{
fin >> s;
n = s.size();
if (run(1) or run(2))
fout << "DA" << '\n';
else fout << "NU" << '\n';
}
return 0;
}