寝癖頭の解法

学習中の覚え書きを投稿、更新していきます。

アルゴ式(beta版): C++による「全探索 (beta)33/33」練習問題の解答例

アルゴ式(beta版)の「全探索 (beta)33/33」練習問題からの出典です。
algo-method.com
アルゴ式とは...
>・プログラミングや情報科学をコツコツ学べる「教科書」
>・学んだ内容をゲーム感覚で大量に実践できる「練習問題」
>の2つで構成される、Web上で完結した学習コンテンツです。

C++による「全探索 (beta)33/33」練習問題の解答例

僕が作成、提出したコードは、以下のとおりです。

・配列の全探索

・配列の全探索 1
algo-method.com

/*
C++による「全探索 (beta)33/33」練習問題の解答例
配列の全探索 1
https://algo-method.com/tasks/209
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
	bool tf=false;
	int n,v;
	cin>>n>>v;
	vector<int> a(n);
	for(int i=0;i<n;i++){
		cin>>a[i];
		if(a[i]==v){
			tf=true;
		}
	}
	if(tf==true){
		cout<<"Yes"<<endl;
	}else{
		cout<<"No"<<endl;
	}
	return 0;
}

・配列の全探索 2
algo-method.com

/*
C++による「全探索 (beta)33/33」練習問題の解答例
配列の全探索 2
https://algo-method.com/tasks/210
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
	int ans=0;
	int n,v;
	cin>>n>>v;
	vector<int> a(n);
	for(int i=0;i<n;i++){
		cin>>a[i];
		if(a[i]==v){
			ans++;
		}
	}
	cout<<ans<<endl;
	return 0;
}

・配列の全探索 3
algo-method.com

/*
C++による「全探索 (beta)33/33」練習問題の解答例
配列の全探索 3
https://algo-method.com/tasks/212
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
	int ans=0;
	int n;
	cin>>n;
	vector<int> a(n);
	for(int i=0;i<n;i++){
		cin>>a[i];
		if(a[i]>0){
			ans++;
		}
	}
	cout<<ans<<endl;
	return 0;
}

・配列の全探索 4
algo-method.com

/*
C++による「全探索 (beta)33/33」練習問題の解答例
配列の全探索 4
https://algo-method.com/tasks/216
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
	int n,v;
	cin>>n>>v;
	vector<int> a(n);
	for(int i=0;i<n;i++){
		cin>>a[i];
	}
	for(int i=n-1;i>=0;i--){
		if(a[i]==v){
			cout<<i<<endl;
			return 0;
		}
	}
	cout<<-1<<endl;
}

・配列の全探索 5
algo-method.com

/*
C++による「全探索 (beta)33/33」練習問題の解答例
配列の全探索 5
https://algo-method.com/tasks/215
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
	int ans=0;
	int n;
	cin>>n;
	vector<int> a(n);
	for(int i=0;i<n;i++){
		cin>>a[i];
	}
	for(int i=1;i<n;i++){
		if(a[i]>a[i-1]){
			ans++;
		}
	}
	cout<<ans<<endl;
	return 0;
}

・配列の全探索 6
algo-method.com

/*
C++による「全探索 (beta)33/33」練習問題の解答例
配列の全探索 6
https://algo-method.com/tasks/213
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
	int ans=-1000;
	int n;
	cin>>n;
	vector<int> a(n);
	for(int i=0;i<n;i++){
		cin>>a[i];
		ans=max(ans,a[i]);
	}
	cout<<ans<<endl;
	return 0;
}

・配列の全探索 7
algo-method.com

/*
C++による「全探索 (beta)33/33」練習問題の解答例
配列の全探索 7
https://algo-method.com/tasks/211
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
	int maximum=0;
	int n;
	cin>>n;
	vector<int> a(n);
	for(int i=0;i<n;i++){
		cin>>a[i];
		maximum=max(maximum,a[i]);
	}
	for(int i=0;i<n;i++){
		if(a[i]==maximum){
			cout<<i<<endl;
			return 0;
		}
	}
}

・配列の全探索 8
algo-method.com

/*
C++による「全探索 (beta)33/33」練習問題の解答例
配列の全探索 8
https://algo-method.com/tasks/214
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
	int ans=1000;
	int n;
	cin>>n;
	vector<int> a(n);
	for(int i=0;i<n;i++){
		cin>>a[i];
		ans=min(ans,a[i]);
	}
	cout<<ans<<endl;
	return 0;
}

・配列の全探索 9
algo-method.com

/*
C++による「全探索 (beta)33/33」練習問題の解答例
配列の全探索 9
https://algo-method.com/tasks/217
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
	vector<int> v(9,0);
	int n;
	cin>>n;
	vector<int> a(n);
	for(int i=0;i<n;i++){
		cin>>a[i];
		v[a[i]-1]++;
	}
	for(int i=0;i<9;i++){
		cout<<v[i]<<endl;
	}
	return 0;
}

・配列の全探索 10
algo-method.com

/*
C++による「全探索 (beta)33/33」練習問題の解答例
配列の全探索 10
https://algo-method.com/tasks/219
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
	vector<int> v(9,0);
	int n;
	cin>>n;
	vector<int> a(n);
	for(int i=0;i<n;i++){
		cin>>a[i];
		v[a[i]-1]++;
	}
	int ans=-1;
	for(int i=0;i<9;i++){
		ans=max(ans,v[i]);
	}
	for(int i=0;i<9;i++){
		if(ans==v[i]){
			cout<<i+1<<endl;
			return 0;
		}
	}
}
・数字の全探索

・数字の全探索 1
algo-method.com

/*
C++による「全探索 (beta)33/33」練習問題の解答例
数字の全探索 1
https://algo-method.com/tasks/220
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
	int n;
	cin>>n;
	int cnt=0;
	for(int i=1;i<=n;i++){
		if(i%2!=0 && i%3!=0 && i%5!=0){
			cnt++;
		}
	}
	cout<<cnt<<endl;
	return 0;
}

・数字の全探索 2
algo-method.com

/*
C++による「全探索 (beta)33/33」練習問題の解答例
数字の全探索 2
https://algo-method.com/tasks/221
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
	int n;
	cin>>n;
	int cnt=0;
	for(int i=1;i<=n;i++){
		if(n%i==0){
			cnt++;
		}
	}
	cout<<cnt<<endl;
	return 0;
}

・数字の全探索 3
algo-method.com

/*
C++による「全探索 (beta)33/33」練習問題の解答例
数字の全探索 3
https://algo-method.com/tasks/222
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
	int n;
	cin>>n;
	if(n==1){
		cout<<"No"<<endl;
		return 0;
	}
	int cnt=0;
	for(int i=2;i<n;i++){
		if(n%i==0){
			cnt++;
		}
	}
	if(cnt==0){
		cout<<"Yes"<<endl;
	}else{
		cout<<"No"<<endl;
	}
	return 0;
}

・数字の全探索 4
algo-method.com

/*
C++による「全探索 (beta)33/33」練習問題の解答例
数字の全探索 4
https://algo-method.com/tasks/224
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
	int a,b;
	cin>>a>>b;
	cout<<gcd(a,b)<<endl;
	return 0;
}

・数字の全探索 5
algo-method.com

/*
C++による「全探索 (beta)33/33」練習問題の解答例
数字の全探索 5
https://algo-method.com/tasks/225
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
	int n;
	cin>>n;
	for(int i=1;i<=n;i++){
		if(i%15==0){
			cout<<"FizzBuzz"<<endl;
		}else if(i%3==0){
			cout<<"Fizz"<<endl;
		}else if(i%5==0){
			cout<<"Buzz"<<endl;
		}else{
			cout<<i<<endl;
		}
	}
	return 0;
}
・文字列の全探索

・文字列の全探索 1
algo-method.com

/*
C++による「全探索 (beta)33/33」練習問題の解答例
文字列の全探索 1
https://algo-method.com/tasks/226
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
    string s,c;
    cin>>s>>c;
    if(s.find(c)==string::npos){
        cout<<"No"<<endl;
    }else{
        cout<<"Yes"<<endl;
    }
    return 0;
}

・文字列の全探索 2
algo-method.com

/*
C++による「全探索 (beta)33/33」練習問題の解答例
文字列の全探索 2
https://algo-method.com/tasks/227
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
    string s;
    cin>>s;
    string t=s;
    reverse(t.begin(),t.end());
    if(s==t){
        cout<<"Yes"<<endl;
    }else{
        cout<<"No"<<endl;
    }
    return 0;
}

・文字列の全探索 3
algo-method.com

/*
C++による「全探索 (beta)33/33」練習問題の解答例
文字列の全探索 3
https://algo-method.com/tasks/228
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
    string s;
    cin>>s;
    int cnt=0;
    int ss=s.size()-0;
    for(int i=0;i<ss-1;i++){
        if(s[i]==s[i+1]){
            cnt++;
        }
    }
    cout<<cnt<<endl;
    return 0;
}

・文字列の全探索 4
algo-method.com

/*
C++による「全探索 (beta)33/33」練習問題の解答例
文字列の全探索 4
https://algo-method.com/tasks/230
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
    int n;
    string s,t;
    cin>>n>>s>>t;
    int cnt=0;
    for(int i=0;i<n;i++){
        if(s[i]!=t[i]){
            cnt++;
        }
    }
    cout<<cnt<<endl;
    return 0;
}

・文字列の全探索 5
algo-method.com

/*
C++による「全探索 (beta)33/33」練習問題の解答例
文字列の全探索 5
https://algo-method.com/tasks/229
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
    string s,t;
    cin>>s>>t;
    if(s.find(t)==string::npos){
        cout<<"No"<<endl;
    }else{
        cout<<"Yes"<<endl;
    }
    return 0;
}
・2重ループの全探索

・2重ループの全探索 1
algo-method.com

/*
C++による「全探索 (beta)33/33」練習問題の解答例
2重ループの全探索 1
https://algo-method.com/tasks/234
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
bool primeTF(int n){
    if(n==1){
		return false;
	}
	int cnt=0;
	for(int i=2;i<n;i++){
		if(n%i==0){
			cnt++;
		}
	}
	if(cnt==0){
		return true;
	}else{
		return false;
	}
}
int main(void){
    int n;
    cin>>n;
    vector<int> a(n);
    int cnt=0;
    for(int i=0;i<n;i++){
        cin>>a[i];
        if(primeTF(a[i])){
            cnt++;
        }
    }
    cout<<cnt<<endl;
    return 0;
}

・2重ループの全探索 2
algo-method.com

/*
C++による「全探索 (beta)33/33」練習問題の解答例
2重ループの全探索 2
https://algo-method.com/tasks/235
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
    int n,k;
    cin>>n>>k;
    int ans=0;
    for(int i=1;i<=n;i++){
        int cnt=0;
	    for(int j=1;j<=i;j++){
		    if(i%j==0){
			    cnt++;
		    }
	    }
        if(cnt==k){
            ans++;
        }
    }
    cout<<ans<<endl;
    return 0;
}

・2重ループの全探索 3
algo-method.com

/*
C++による「全探索 (beta)33/33」練習問題の解答例
2重ループの全探索 3
https://algo-method.com/tasks/238
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
    int l,r;
    cin>>l>>r;
    int cnt=0;
    for(int i=l;i<=r;i++){
        string s=to_string(i);
        string t=s;
        reverse(t.begin(),t.end());
        if(s==t){
            cnt++;
        }
    }
    cout<<cnt<<endl;
    return 0;
}

・2重ループの全探索 4
algo-method.com

/*
C++による「全探索 (beta)33/33」練習問題の解答例
2重ループの全探索 4
https://algo-method.com/tasks/236
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
    string s;
    cin>>s;
    vector<char> v;
    for(int i=0;i<s.size();i++){
        v.push_back(s[i]);
    }
    sort(v.begin(),v.end());
    v.erase(unique(v.begin(),v.end()),v.end());
    cout<<v.size()<<endl;
    return 0;
}

・2重ループの全探索 5
algo-method.com

/*
C++による「全探索 (beta)33/33」練習問題の解答例
2重ループの全探索 5
https://algo-method.com/tasks/237
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
bool tf(string s){
    string t=s;
    reverse(t.begin(),t.end());
    if(s==t){
        return true;
    }else{
        return false;
    }
}
int main(void){
    int n;
    cin>>n;
    int cnt=0;
    vector<string> s(n);
    for(int i=0;i<n;i++){
        cin>>s[i];
        if(tf(s[i])){
            cnt++;
        }
    }
    cout<<cnt<<endl;
    return 0;
}
・複数の配列の全探索

・複数の配列の全探索 1
algo-method.com

/*
C++による「全探索 (beta)33/33」練習問題の解答例
複数の配列の全探索 1
https://algo-method.com/tasks/231
提出コードの解答例
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);
    vector<int> b(m);
    for(int i=0;i<n;i++){
        cin>>a[i];
    }
    for(int i=0;i<m;i++){
        cin>>b[i];
    }
    int cnt=0;
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            if(a[i]>b[j]){
                cnt++;
            }
        }
    }
    cout<<cnt<<endl;
    return 0;
}

・複数の配列の全探索 2
algo-method.com

/*
C++による「全探索 (beta)33/33」練習問題の解答例
複数の配列の全探索 2
https://algo-method.com/tasks/232
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
    int n,m,k;
    cin>>n>>m>>k;
    vector<int> a(n);
    vector<int> b(m);
    for(int i=0;i<n;i++){
        cin>>a[i];
    }
    for(int i=0;i<m;i++){
        cin>>b[i];
    }
    int cnt=0;
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            if(a[i]+b[j]==k){
                cnt++;
            }
        }
    }
    cout<<cnt<<endl;
    return 0;
}

・複数の配列の全探索 3
algo-method.com

/*
C++による「全探索 (beta)33/33」練習問題の解答例
複数の配列の全探索 3
https://algo-method.com/tasks/233
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
    int x,y,z;
    cin>>x>>y>>z;
    vector<int> a(x),b(y),c(z);
    for(int i=0;i<x;i++){
        cin>>a[i];
    }
    for(int i=0;i<y;i++){
        cin>>b[i];
    }
    for(int i=0;i<z;i++){
        cin>>c[i];
    }
    int cnt=0;
    for(int i=0;i<x;i++){
        for(int j=0;j<y;j++){
            for(int k=0;k<z;k++){
                if(a[i]+b[j]==c[k]){
                    cnt++;
                }
            }
        }
    }
    cout<<cnt<<endl;
    return 0;
}
・ペアの全探索

・ペアの全探索 1
algo-method.com

/*
C++による「全探索 (beta)33/33」練習問題の解答例
ペアの全探索 1
https://algo-method.com/tasks/244
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
    int n,k;
    cin>>n>>k;
    vector<int> a(n);
    for(int i=0;i<n;i++){
        cin>>a[i];
    }
    int cnt=0;
    for(int i=0;i<n;i++){
        for(int j=i+1;j<n;j++){
            if(a[i]+a[j]<=k){
                cnt++;
            }
        }
    }
    cout<<cnt<<endl;
    return 0;
}

・ペアの全探索 2
algo-method.com

/*
C++による「全探索 (beta)33/33」練習問題の解答例
ペアの全探索 2
https://algo-method.com/tasks/245
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
bool tf(int a,int b){
    if(a==b){
        return false;
    }else{
        string s=to_string(a);
        string t=to_string(b);
        reverse(s.begin(),s.end());
        reverse(t.begin(),t.end());
        if(s[0]==t[0]){
            return true;
        }else{
            return false;
        }
    }
}
int main(void){
    int l,r;
    cin>>l>>r;
    int cnt=0;
    for(int i=l;i<=r;i++){
        for(int j=i+1;j<=r;j++){
            if(tf(i,j)){
                cnt++;
            }
        }
    }
    cout<<cnt<<endl;
    return 0;
}

・ペアの全探索 3
algo-method.com

/*
C++による「全探索 (beta)33/33」練習問題の解答例
ペアの全探索 3
https://algo-method.com/tasks/259
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
    int n;
    cin>>n;
    vector<int> a(n);
    for(int i=0;i<n;i++){
        cin>>a[i];
    }
    int cnt=0;
    for(int x=0;x<n;x++){
        for(int y=x+1;y<n;y++){
            for(int z=y+1;z<n;z++){
                int m=max(a[x],max(a[y],a[z]));
                if(m==a[y]){
                    cnt++;
                }
            }
        }
    }
    cout<<cnt<<endl;
    return 0;
}

・ペアの全探索 4
algo-method.com

/*
C++による「全探索 (beta)33/33」練習問題の解答例
ペアの全探索 4
https://algo-method.com/tasks/260
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
    int n;
    cin>>n;
    vector<string> s(n),t(n);
    for(int i=0;i<n;i++){
        cin>>s[i];
        t[i]=s[i];
    }
    sort(t.begin(),t.end());
    t.erase(unique(t.begin(),t.end()),t.end());
    int ss=s.size()-0;
    int ts=t.size()-0;
    if(ss!=ts){
        cout<<"Yes"<<endl;
    }else{
        cout<<"No"<<endl;
    }
    return 0;
}

・ペアの全探索 5
algo-method.com

/*
C++による「全探索 (beta)33/33」練習問題の解答例
ペアの全探索 5
https://algo-method.com/tasks/261
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
    int n;
    string s;
    cin>>n>>s;
    int cnt=0;
    for(int x=0;x<n;x++){
        for(int y=x+1;y<n;y++){
            if(s[x]==s[y]){
                cnt++;
            }
        }
    }
    cout<<cnt<<endl;
    return 0;
}

設問の出典は、情報科学をコツコツ積み立てて学習できるサービス「アルゴ式(beta版)」です。
algo-method.com