Pagini recente » Cod sursa (job #2544917) | Cod sursa (job #1096324) | Cod sursa (job #2528684) | Cod sursa (job #2716451) | Cod sursa (job #2550737)
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <vector>
#include <functional>
#include <fstream>
#include <iostream>
using namespace std;
ifstream f("invers.in");
ofstream g("invers.out");
char s[10005];
int T,v[10005];
bool check(int i,int j)
{
for(int d=1;d<=j;d++) v[d]=s[d]-'0';
if(i==1&&v[j]==0) return false;
while(i<j)
{if(v[i-1]!=0&&v[i-1]!=1) return false;
if(v[i-1]==1) v[i]+=10;
if(v[i]>=v[j]+10)
{
for(int d=j-1;d>=1;d--)
{
if(v[d]>0)
{
v[d]--;
break;
}
else v[d]=9;
}
v[j]=v[j]+10;
}
if(v[j]==19) return false;
v[i]=v[i]-v[j];
i++;
j--;
}
if(i!=j)
{
if(v[j]==0) return true;
return false;
}
if(v[i-1]<2&&(v[i]%2==0)) return true;
else return false;
}
int main()
{
/*
int cnt=0;
for(int i=10;i<=300000;i++)
{
int ci=i;
int nr=0;
while(ci>0)
{
nr=nr*10+ci%10;
ci=ci/10;
}
v[++cnt]=i+nr;
if(i+nr==111621) cout<<nr<<" ";
}
sort(v+1,v+cnt+1);
for(int i=1;i<=cnt;i++)
{
g<<v[i]<<" ";
if(i%10==0) g<<'\n';
}
*/
f>>T;
while(T)
{
T--;
f>>(s+1);
int n=strlen(s+1);
if(check(1,n)||check(2,n)) g<<"DA"<<'\n';
else g<<"NU"<<'\n';
}
}