Aizu Online Judge(AOJ)の過去問から、その提出コードの解答例です。
・問題 "Bit Mask"
https://onlinejudge.u-aizu.ac.jp/problems/ITP2_10_D
僕が作成、提出したコードは、以下のとおりです。
Aizu Online Judge in C++ #ITP2_10_D : Bit Mask
/* Aizu Online Judge in C++ #ITP2_10_D : Bit Mask https://onlinejudge.u-aizu.ac.jp/problems/ITP2_10_D 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; unsigned long a,m[10]; int n; int main(void){ cin>>n; for(int i=0;i<n;i++){ int k; cin>>k; while(k--){ int a; cin>>a; m[i]|=1L<<a; } } cin>>n; while(n--){ int t,b; cin>>t>>b; if(t==0){ cout<<(a>>b&1)<<endl; }else if(t==1){ a|=m[b]; }else if(t==2){ a&=~m[b]; }else if(t==3){ a^=m[b]; }else if(t==4){ cout<<((a&m[b])==m[b])<<endl; }else if(t==5){ cout<<!!(a&m[b])<<endl; }else if(t==6){ cout<<!(a&m[b])<<endl; }else if(t==7){ cout<<__builtin_popcountl(a&m[b])<<endl; }else{ cout<<(a&m[b])<<endl; } } return 0; }
設問の出典は、プログラミング問題のオンライン採点システム「Aizu Online Judge(AOJ)」です。
http://judge.u-aizu.ac.jp/onlinejudge/