## 1問目
↓回答済み
B - チーム戦 (Teamwork)
## 2問目
↓回答済み
B - ㍻の終焉を告げる
## 3問目
↓回答済み
A - ニコニコ文字列判定
## 4問目
↓回答済み
A - WAsedAC
## 5問目
↓回答済み
A - Still TBD
6問目
問題リンク: https://atcoder.jp/contests/abc132/tasks/abc132_a
解説
ソートする
ソートすると条件を満たす場合は1文字目と2文字目が一緒になり,3文字目と4文字目が一緒になることがわかると思います.
そして,2文字目と3文字目の文字が違っていたら"Yes"を表示しましょう.
#include <bits/stdc++.h>
using namespace std;
int main() {
string s;
cin >> s;
sort(s.begin(),s.end());
if(s.at(0)==s.at(1) && s.at(1)!=s.at(2) && s.at(2)==s.at(3))cout << "Yes" << endl;
else cout << "No" << endl;
}
全探索
全探索したら特定の文字を基準にした時その文字と同じ文字はそれ自身を含めて二つなはずです.
#include <bits/stdc++.h>
using namespace std;
int main() {
string s;
cin >> s;
for(int i=0;i<4;i++){
int cnt=0;
for(int j=0;j<4;j++)if(s.at(i)==s.at(j))cnt++;
if(cnt!=2){
cout << "No" << endl;
return 0;
}
}
cout << "Yes" << endl;
}
7問目
問題リンク: https://atcoder.jp/contests/cpsco2019-s1/tasks/cpsco2019_s1_a
解説
最小となる値は本の数を3で割って切り上げた値です.
一方,最大の値は チーム数 か 本の個数 のうちの小さい方です.
#include <bits/stdc++.h>
using namespace std;
int main() {
int n,a;
cin >> n >> a;
cout << (a+2)/3 << " " << min(n/3,a) << endl;
}
8問目
↓回答済み
C - 異世界転生
9問目
↓回答済み
B - 文字列大好きいろはちゃんイージー
10問目
↓回答済み
B - Two Anagrams
11問目
↓回答済み
B - Some Sums
12問目
↓回答済み
B - Long Long Ago
13問目
問題リンク: https://atcoder.jp/contests/abc080/tasks/abc080_b
解説
下記のコードのwhile文のような処理で各桁の総和を取得可能です.
これは過去記事でもなんども言及してあるので今回は割愛させていただきます.
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin >> n;
int cp = n;
int sum=0;
while(cp){
sum += cp%10;
cp /= 10;
}
if(n%sum)cout << "No" << endl;
else cout << "Yes" << endl;
}
14問目
問題リンク: https://atcoder.jp/contests/abc088/tasks/abc088_b
解説
コメントを参考に確認してください
#include<bits/stdc++.h>
using namespace std;
int main(){
//入力部
int n;
vector<int> a(100);
cin >> n;
for(int i=0;i<n;i++)cin >> a.at(i);
//計算部
sort(a.begin(),a.end()); //ソート関数でソートします(今回の配列長ならバブルソートでも可)
reverse(a.begin(),a.end());// 昇順から降順に反転
int even = 0, odd = 0; //偶数、奇数それぞれの要素の総和を格納する変数を用意
for(int i=0;i<n;i++){
if(i%2) odd += a.at(i); // 奇数個目の要素なら
else even += a.at(i); // 偶数個目の要素なら
}
//出力部
cout << even-odd << endl;
return 0;
}
15問目
リンク: https://atcoder.jp/contests/abc095/tasks/abc095_b
解説
まずはXからN種類のドーナツを作る際の必要な量だけ減らします.
その後,最も必要なこなの量が少ないドーナツの小麦量でそれを割ります.
この割った結果と最初に作ったN個のドーナツの数を足せば答えが出ます.
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,x;
cin >> n >> x;
int MIN = 10000;
for(int i=0;i<n;i++){
int a;
cin >> a;
x-=a;
MIN = min(MIN,a);
}
cout << n+x/MIN << endl;
}
16問目
↓回答済み
A - 値札