paizaラーニングのレベルアップ問題集「二重ループメニュー」からの出典です。
paiza.jp
C++による「二重ループ:活用編」問題集と、それらの提出コードの解答例です。
僕が作成、提出したコードは、以下のとおりです。
・STEP: 1 行列の転置
/* C++による「二重ループ:活用編」問題集 STEP: 1 行列の転置 https://paiza.jp/works/mondai 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ int n,k; cin>>n>>k; int a[n][k]; for(int i=0;i<n;i++){ for(int j=0;j<k;j++){ cin>>a[i][j]; } } for(int i=0;i<k;i++){ for(int j=0;j<n;j++){ cout<<a[j][i]; if(j!=n-1){ cout<<" "; } } cout<<endl; } return 0; }
・STEP: 2 かけ算表
/* C++による「二重ループ:活用編」問題集 STEP: 2 かけ算表 https://paiza.jp/works/mondai 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ int n; cin>>n; int a[n]; for(int i=0;i<n;i++){ cin>>a[i]; } for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ cout<<a[i]*a[j]; if(j!=n-1){ cout<<" "; } } cout<<endl; } return 0; }
・STEP: 3 素数の個数
/* C++による「二重ループ:活用編」問題集 STEP: 3 素数の個数 https://paiza.jp/works/mondai 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ bool tf; int n,cnt=0; cin>>n; for(int i=2;i<=n;i++){ tf=true; for(int j=2;j<i;j++){ if(i%j==0){ tf=false; } } if(tf==true){ cnt++; } } cout<<cnt<<endl; return 0; }
・STEP: 4 log2
/* C++による「二重ループ:活用編」問題集 STEP: 4 log2 https://paiza.jp/works/mondai 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ int n,cnt=0; cin>>n; for(int i=1;i<=n;i++){ int j=i; while(1){ if(j%2!=0){ break; }else{ j/=2; cnt++; } } } cout<<cnt<<endl; return 0; }
・STEP: 5 スーパー鳩時計
/* C++による「二重ループ:活用編」問題集 STEP: 5 スーパー鳩時計 https://paiza.jp/works/mondai 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ for(int i=0;i<=23;i++){ for(int j=0;j<=59;j++){ int k=i+j; if(k%15==0){ cout<<"FIZZBUZZ"<<endl; }else if(k%5==0){ cout<<"BUZZ"<<endl; }else if(k%3==0){ cout<<"FIZZ"<<endl; }else{ cout<<endl; } } } return 0; }
・STEP: 6 格子点
/* C++による「二重ループ:活用編」問題集 STEP: 6 格子点 https://paiza.jp/works/mondai 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ int ans=0; for(int i=1;i<99;i++){ for(int j=1;j<99;j++){ if(i*i*i+j*j*j<100000){ ans=max(ans,i*j); } } } cout<<ans<<endl; return 0; }
・STEP: 7 お金の支払い
/* C++による「二重ループ:活用編」問題集 STEP: 7 お金の支払い https://paiza.jp/works/mondai 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ int x,y,z; cin>>x>>y>>z; int ans=z; for(int i=0;i<3000;i++){ for(int j=0;j<3000;j++){ int k=x*i+y*j; if(k<=z){ int l=z-k; if(i+j+l<ans){ ans=i+j+l; } } } } cout<<ans<<endl; return 0; }
・FINAL問題 二重ループ:活用編 三角形の探索
/* C++による「二重ループ:活用編」問題集 FINAL問題 二重ループ:活用編 三角形の探索 https://paiza.jp/works/mondai 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ int n; cin>>n; for(int a=1;a<n;a++){ for(int b=1;b<n-a;b++){ int c=n-(a+b); if(a*a+b*b==c*c || a*a+c*c==b*b || b*b+c*c==a*a){ cout<<"YES"<<endl; return 0; } } } cout<<"NO"<<endl; }
paizaラーニングのレベルアップ問題集については、ユーザー同士で解答を教え合ったり、コードを公開したりするのは自由としています。
また授業や研修、教材などにも利用できるそうです。