![見出し画像](https://assets.st-note.com/production/uploads/images/29146921/rectangle_large_type_2_ea1b95ad8acba915e2ab6476cf86b07a.png?width=1200)
Photo by
ia19200102
AtCoder Beginner Contest 171をしがむ
実はちょこちょこ「Python」で解いた問題を「C++」に書き直していたので、記録しておこうと思う。
A - αlphabet
#include <bits/stdc++.h>
using namespace std;
int main() {
char C;
cin >> C;
if (isupper(C)){
cout << 'A' << endl;
} else {
cout << 'a' << endl;
}
}
「isupper()」あるんすね。ただ、「Python」なら1行なのに、「C++」11行!!その代わり、「Python」の1/5の実行速度。その速度いるんかと言われればよくわからんけど。とにかく早い。
B - Mix Juice
#include <bits/stdc++.h>
using namespace std;
#define rep(i, n) for (int i = 0; i < (int)(n); i++)
int main() {
int N, K;
cin >> N >> K;
vector<int> P(N);
rep(i, N){
cin >> P.at(i);
}
sort(P.begin(), P.end());
int ans = 0;
rep(i, K){
ans += P.at(i);
}
cout << ans << endl;
}
「sort()」の指定方法が独特だなぁ。「begin」と「end」以外を指定することはあるんだろうか。
C - One Quadrillion and One Dalmatians
#include <bits/stdc++.h>
using namespace std;
#define rep(i, n) for (int i = 0; i < (int)(n); i++)
int main() {
long long N;
cin >> N;
string name_str;
while (N > 0){
N -= 1;
name_str += 'a' + N%26;
N /= 26;
}
reverse(name_str.begin(), name_str.end());
cout << name_str << endl;
}
「reverse()」も「sort()」と同じ指定方法。
D - Replacing
#include <bits/stdc++.h>
#define rep(i, n) for (int i = 0; i < (int)(n); i++)
using namespace std;
using ll = long long;
using P = pair<int, int>;
int main() {
int N;
cin >> N;
int MX = 100001;
vector<int> int_list(MX);
ll sum = 0;
rep(i, N){
int a;
cin >> a;
int_list.at(a) += 1;
sum += a;
}
int Q;
cin >> Q;
rep(i, Q){
int B, C;
cin >> B >> C;
sum += (C-B) * int_list.at(B);
cout << sum << endl;
int_list.at(C) += int_list.at(B);
int_list.at(B) = 0;
}
}
値の入力をリスト内包表記で受け取れないから、「for(rep)」の中で受け取ることになり、それなら一緒に処理もしたらええやんとなり、そうなると結構「Python」とは考え方が違って面白かった。
この記事が気に入ったらサポートをしてみませんか?