Ternary XOR


#include<iostream>
#include<cmath>
using namespace std;
int num,i,ii;
int main(){
    int a,is=-5;
    char arr[50005];
    cin>>num;
    for(int j=0;j<num;j++){
        cin>>a>>arr;//将三进制数作为字符串
        cout<<1;
        for(i=0;i<a-1;i++){//第一次输出
            if(arr[i+1]!='1' && is<0){//一直都不是1的时候输出是确定的
                cout<<((arr[i+1]=='0')?'0':'1');
            }else if(arr[i+1]=='1' && is<0){//第一次出现1,记录位置,输出1,
                is=i;
                cout<<1;
            }else{//发现1后,此后全部输出0
                cout<<0;
            }
        }
        cout<<endl<<1;
        for(i=0;i<a-1;i++){//第二次输出
            if(is<0 || i<is)//如果没有1或没到,则按固定输出
                cout<<((arr[i+1]=='0')?'0':'1');
            else if(i==is)//如果到1了,输出0
                cout<<0;
            else
                cout<<arr[i+1];//1后的全部安照原样输出
        }cout<<endl;
        is=-5;
    }
    return 0;   
}
原文地址:https://www.cnblogs.com/forwhat00/p/12587053.html