Pagini recente » Cod sursa (job #2881213) | Cod sursa (job #41465) | Cod sursa (job #3141378) | Cod sursa (job #2243678) | Cod sursa (job #2922462)
/// Preset de infoarena
#include <fstream>
using namespace std;
ifstream fin("invers.in");
ofstream fout("invers.out");
string str;
int aux[10005], v[10005];
bool check(int st, int dr)
{
if(st > dr)
return 0;
for(int i = 1; i <= dr; i++)
v[i] = aux[i];
if(st == 1 && v[dr] == 0)
return 0;
while(st < dr)
{
if((v[st - 1] > 1) || (v[st - 1] < 0))
return 0;
if(v[st - 1] == 1)
v[st] += 10;
if(v[st] - v[dr] > 9)
{
int poz = dr - 1;
while(v[poz] <= 0)
{
v[poz] = 9;
poz--;
}
v[poz]--;
v[dr] += 10;
}
if(v[dr] == 19)
return 0;
v[st] -= v[dr];
st++;
dr--;
}
if(v[st - 1] < 0)
return 0;
if(st == dr)
{
if((v[st] % 2 == 1) || (v[st - 1] > 1))
return 0;
}
else if(v[st - 1] > 0)
return 0;
return 1;
}
void solve()
{
fin >> str;
for(int i = 0; i < str.size(); i++)
aux[i + 1] = str[i] - '0';
if(check(1, str.size()) || check(2, str.size()))
fout << "DA\n";
else
fout << "NU\n";
}
int main()
{
int nr_teste;
fin >> nr_teste;
while(nr_teste--)
solve();
return 0;
}