アルゴ式(beta版)の「ビット演算 (9 章:集合演算)」からの出典です。
algo-method.com
アルゴ式とは...
>・プログラミングや情報科学をコツコツ学べる「教科書」
>・学んだ内容をゲーム感覚で大量に実践できる「練習問題」
>の2つで構成される、Web上で完結した学習コンテンツです。
C++による「ビット演算 (9 章:集合演算)」- Q7. 共通部分と和集合
僕が作成、提出したコードは、以下のとおりです。
Q7. 共通部分と和集合
algo-method.com
C++:1回目の提出コード
/* アルゴ式(beta版):C++による「ビット演算(9章)」- Q7. 共通部分と和集合 Q7. 共通部分と和集合 https://algo-method.com/tasks/1080 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; using ll=long long; int main(void){ ll n,x,y; cin>>n>>x>>y; vector<ll> v;ll c=0; while(x>0){ if(x%2){ v.push_back(c); } x/=2; c++; } vector<ll> w;c=0; while(y>0){ if(y%2){ w.push_back(c); } y/=2; c++; } vector<ll> vec;ll a1=0; set_intersection(v.begin(),v.end(),w.begin(),w.end(),inserter(vec,vec.end())); for(ll i=0;i<vec.size();i++){ a1+=powl(2,vec[i]); } vector<ll> vec2;ll a2=0; set_union(v.begin(),v.end(),w.begin(),w.end(),inserter(vec2,vec2.end())); for(ll i=0;i<vec2.size();i++){ a2+=powl(2,vec2[i]); } cout<<a1<<" "<<a2<<"\n"; return 0; }
C++:超改良版の提出コード
/* アルゴ式(beta版):C++による「ビット演算(9章)」- Q7. 共通部分と和集合 Q7. 共通部分と和集合 https://algo-method.com/tasks/1080 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; using ll=long long; int main(void){ ll n,x,y; cin>>n>>x>>y; cout<<(x&y)<<" "<<(x|y)<<endl; return 0; }
Python:提出コード
''' アルゴ式(beta版):C++による「ビット演算(9章)」- Q7. 共通部分と和集合 Q7. 共通部分と和集合 https://algo-method.com/tasks/1080 提出コードの解答例 https://neguse-atama.hatenablog.com ''' n,x,y=map(int,input().split()) print(x&y,x|y)
設問の出典は、情報科学をコツコツ積み立てて学習できるサービス「アルゴ式(beta版)」です。
algo-method.com