Pagini recente » Cod sursa (job #2063158) | Cod sursa (job #2792261) | Cod sursa (job #1610230) | Cod sursa (job #2764849) | Cod sursa (job #1188456)
#include <fstream>
#include <string>
bool test(std::string s){
if(s.size()==1) return !((s[0]-'0')&1);
else{
//for(unsigned i=0;i<s.size();++i) s[i]-='0';
unsigned l=0,r=s.size()-1;
unsigned possible=true;
while(possible&&l<=r){
if(l==r) possible=((s[l]-'0')&1)==0;
else if(l+1==r){
if(s[l]!=s[r]&&s[l]!=s[r]+11) possible=false;
if(s[r]=='1') possible=false;
}
else if(s[l]==s[r]);
else if(s[l]==s[r]+1) s[l+1]+=10;
else if(s[l]-s[r]==10){
if(s[r]==9) possible=false;
else --s[r-1];
}
else if(s[l]-s[r]==11){
if(s[r]==9) possible=false;
else --s[r-1];
s[l+1]+=10;
}
else possible=false;
++l; --r;
}
return possible;
}
}
int main(){
std::ifstream fin("invers.in");
std::ofstream fout("invers.out");
int T; fin>>T;
while(T--){
std::string s; fin>>s;
bool retval=false;
if(s.size()>1&&s[0]=='1'){
std::string s2(s,1);
s2[0]+=10;
retval=test(s2);
}
if(!retval) retval=test(s);
if(retval) fout<<"DA\n";
else fout<<"NU\n";
}
}