#include<bits/stdc++.h>
// #define int long long
#define rep(i,a,b) for(int i=(a);i<=(b);++i)
#define per(i,a,b) for(int i=(a);i>=(b);--i)
#define fv(i,p) for(int i=0;i<p.size();++i)
#define ptc putchar
#define il inline
#define reg register
// #define push_back pb
// #define mp make_pair
// #define eb emplace_back
// #define ret; return 0;
using namespace std;
const int N=100005;
const int MOD=998244353;
const int INF=0x3f3f3f3f;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
int Max(int a,int b){return a>b?a:b;}
int MAX(int a,int b,int c){return Max(a,Max(b,c));}
int Min(int a,int b){return a<b?a:b;}
int MIN(int a,int b,int c){return Min(a,Min(b,c));}
void Swap(int&a,int&b){int tmp=a;a=b;b=tmp;}
void cmin(int&x,int y){if(x>y)x=y;}
void cmax(int&x,int y){if(x<y)x=y;}
int read(){
int x=0,f=1;
char ch=getchar();
while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}
while(isdigit(ch)){x=(x<<3)+(x<<1)+(ch^48);ch=getchar();}
return x*f;
}
int T,n,q,a[N],sum[N],ans;
string s;
void solve(){
n=q=ans=0;memset(a,0,sizeof(a));memset(sum,0,sizeof(sum));
cin>>n;rep(i,1,n)cin>>a[i];cin>>s>>q;
rep(i,1,n)sum[i]=sum[i-1]^a[i];
rep(i,1,s.size())if(s[i]=='1')ans^=a[i];
while(q--){
int op;cin>>op;
if(op==1){
int l,r;cin>>l>>r;
ans^=(sum[r]^sum[l-1]);
}else if(op==2){
int x;cin>>x;
if(x==1)cout<<ans<<' ';
else cout<<sum[n]^ans;
}
}
}
signed main(){
// freopen("input.txt","r",stdin);
// freopen("output.txt","w",stdout);
ios::sync_with_stdio(0);
cin.tie(0);
cin>>T;
while(T--){
solve();
}
return 0;
}
报错在这一行:
else cout<<sum[n]^ans;
报错信息是:
error: no match for 'operator^' (operand types are 'std::basic_ostream<char>' and 'int')
g++ 告诉我,他认为 sumn 的类型是 std::basic_ostream<char>?
求调