アルゴ式(beta版)の「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(2) 集合からの出典です。
algo-method.com
アルゴ式とは...
>・プログラミングや情報科学をコツコツ学べる「教科書」
>・学んだ内容をゲーム感覚で大量に実践できる「練習問題」
>の2つで構成される、Web上で完結した学習コンテンツです。
C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(2) 集合の解答例
僕が作成、提出したコードは、以下のとおりです。
Q6-2-1. 共通する数 (A ∩ B)
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(2) 集合の解答例 Q6-2-1. 共通する数 (A ∩ B) https://algo-method.com/tasks/586 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ int n,m; cin>>n>>m; vector<int> v,a(n),b(m); for(int i=0;i<n;i++){ cin>>a[i]; } for(int i=0;i<m;i++){ cin>>b[i]; } set_intersection(a.begin(),a.end(),b.begin(),b.end(),back_inserter(v)); sort(v.begin(),v.end()); for(int i=0;i<(int)v.size();i++){ cout<<v[i]<<endl; } return 0; }
Q6-2-2. 数の合併 (A ∪ B)
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(2) 集合の解答例 Q6-2-2. 数の合併 (A ∪ B) https://algo-method.com/tasks/590 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ int n,m; cin>>n>>m; vector<int> a(n),b(m),ans; for(int i=0;i<n;i++){ cin>>a[i]; } for(int i=0;i<m;i++){ cin>>b[i]; } set_union(a.begin(),a.end(),b.begin(),b.end(),back_inserter(ans)); for(int i=0;i<(int)ans.size();i++){ cout<<ans[i]<<endl; } return 0; }
Q6-2-3. 書かれた数の個数 (1)
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(2) 集合の解答例 Q6-2-3. 書かれた数の個数 (1) https://algo-method.com/tasks/592 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ int n,x; cin>>n>>x; int cnt=0; for(int i=1;i<=n;i++){ if(i%x==0){ cnt++; } } cout<<cnt<<endl; //本当は、 //int n,x; //cin>>n>>x; //cout<<n/x<<endl; //という3行で終わらせられる. return 0; }
Q6-2-4. 書かれた数の個数 (2)
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(2) 集合の解答例 Q6-2-4. 書かれた数の個数 (2) https://algo-method.com/tasks/593 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ int n,x,y; cin>>n>>x>>y; vector<int> a,b,ans; for(int i=1;i<=n;i++){ if(i%x==0){ a.push_back(i); } if(i%y==0){ b.push_back(i); } } set_intersection(a.begin(),a.end(),b.begin(),b.end(),back_inserter(ans)); cout<<ans.size()<<endl; return 0; }
Q6-2-5. 含まれない数
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(2) 集合の解答例 Q6-2-5. 含まれない数 https://algo-method.com/tasks/598 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ int n,m; cin>>n>>m; vector<int> a(n),b(m); for(int i=0;i<n;i++){ cin>>a[i]; } for(int i=0;i<m;i++){ cin>>b[i]; } vector<int> ans; set_difference(a.begin(),a.end(),b.begin(),b.end(),back_inserter(ans)); for(auto i : ans){ cout<<i<<endl; } return 0; }
Q6-2-6. 合併後の個数
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(2) 集合の解答例 Q6-2-6. 合併後の個数 https://algo-method.com/tasks/639 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ int n,m,k; cin>>n>>m>>k; cout<<n+m-k<<endl; return 0; }
Q6-2-7. 書かれた数の個数 (3)
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(2) 集合の解答例 Q6-2-7. 書かれた数の個数 (3) https://algo-method.com/tasks/640 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ int n,x,y; cin>>n>>x>>y; vector<int> S(n),A(x),B(y),AUB,C; for(int i=0;i<n;i++){ S[i]=i+1; } for(int i=0;i<x;i++){ cin>>A[i]; } for(int i=0;i<y;i++){ cin>>B[i]; } set_union(A.begin(),A.end(),B.begin(),B.end(),back_inserter(AUB)); set_difference(S.begin(),S.end(),AUB.begin(),AUB.end(),back_inserter(C)); cout<<C.size()<<endl; return 0; }
Q6-2-8. 書かれた数の個数 (4)
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(2) 集合の解答例 Q6-2-8. 書かれた数の個数 (4) https://algo-method.com/tasks/641 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ long long n; cin>>n; cout<<n-(n/3)-(n/5)+(n/15)<<endl; return 0; }
設問の出典は、情報科学をコツコツ積み立てて学習できるサービス「アルゴ式(beta版)」です。
algo-method.com