实验一-递归
#include<iostream> using namespace std; int ans; void dfs(int pos,int n,int *a,int *b){ if(pos>n){ int ans_now=0,num=0; for(int i=1;i<=n;i++) if(b[i]==1){ num++; ans_now+=num*a[i]; } ans^=ans_now; return; } dfs(pos+1,n,a,b); b[pos]=1; dfs(pos+1,n,a,b); b[pos]=0; } int main(){ int n,*a,*b,*v; cin>>n; a=new int[n+1]; b=new int[n+1]; for(int i=1;i<=n;i++){ cin>>a[i]; b[i]=0; } dfs(1,n,a,b); cout<<ans<<endl; delete []a; delete []b; return 0; }