题解 | #字符串合并处理#
字符串合并处理
http://www.nowcoder.com/practice/d3d8e23870584782b3dd48f26cb39c8f
#include #include #include using namespace std; int f(int n) { int m=0,w=3; while(n) { m=m+n%2*pow(2,w); n=n/2; w--; } return(m); } char g(int n) { char u; if(n<=9&&n>=0) { u=n+'0'; } else if(n>=10&&n<=16) { u=n-10+'A'; } return(u); } int main() { string a,b; while(cin>>a>>b) { a=a+b; for(int i=0;i<a.length()-2;i+=2) { for(int j=i+2;j<a.length();j+=2) { if(a[i]>a[j]) { char c=a[i]; a[i]=a[j]; a[j]=c; } } } for(int i=1;i<a.length()-2;i+=2) { for(int j=i+2;j<a.length();j+=2) { if(a[i]>a[j]) { char c=a[i]; a[i]=a[j]; a[j]=c; } } } for(int i=0;i<a.length();i++) { if(a[i]>='0'&&a[i]<='9') { int c=a[i]-'0'; a[i]=g(f(c));
}
else if(a[i]>='a'&&a[i]<='f')
{
int c=a[i]-'a'+10;
a[i]=g(f(c));
}
else if(a[i]>='A'&&a[i]<='F')
{
int c=a[i]-'A'+10;
a[i]=g(f(c));
}
}
cout<<a;
}
return(0);
}