[前回]
(https://qiita.com/flandrescarlet237/items/1d9e300f9e47521044ef)
5日目
今回も前回と同じように@drkenさんのAtCoder に登録したら次にやること ~ これだけ解けば十分闘える!過去問精選 10 問 ~の第5問から第7問まで解きました。
第5問 ABC083_B
[Some Sums]
(https://atcoder.jp/contests/abc083/tasks/abc083_b)
# include <bits/stdc++.h>
using namespace std;
int Sum(int n)
{
int sum = 0;
while(n >0){
sum += n % 10;
n /= 10;
}
return sum;
}
int main(){
int N , A ,B;
cin >> N >> A >> B;
int total = 0;
for(int i =1;i <= N;i++){
int sum = Sum(i);
if(A <= sum && sum <= B)total += i;
}
cout << total << endl;
}
これは、解説を見たときにこんなやり方をすればいいのかと、驚きました。
第6問 ABC088_B
[Card Game for Two]
(https://atcoder.jp/contests/abc088/tasks/abc088_b)
# include <bits/stdc++.h>
using namespace std;
int main(){
int N;
int A[110];
cin >> N;
for (int i =0;i < N;i++) cin >> A[i];
sort(A ,A + N);
reverse(A ,A + N);
int Alice = 0;
int Bob = 0;
for(int i =0;i <N;i++){
if(i % 2 == 0)Alice += A[i];
else Bob += A[i];
}
cout << Alice - Bob << endl;
}
これは、ある程度までは自力で解くことができました。
少しだけ進歩を感じれた問題です。
第7問 ABC085_B
[Kagami Mochi]
(https://atcoder.jp/contests/abc085/tasks/abc085_b)
# include <bits/stdc++.h>
using namespace std;
int main() {
int N;
int d[110];
cin >> N;
for (int i = 0; i < N; ++i) cin >> d[i];
int num[110] = {0};
for (int i = 0; i < N; ++i) {
num[d[i]]++;
}
int res = 0;
for (int i = 1; i <= 100; ++i) {
if (num[i] >0) {
++res;
}
}
cout << res << endl;
}
バケット法というものを知りました。今後は同じようなものが来ても大丈夫そうです。
精選された10問を解いているとなんだか毎回新しいものを知れて嬉しいです