for文とbreak
Hina Arare
abc089_b.cpp
#include <bits/stdc++.h>
using namespace std;
int main(){
int N ;
cin >> N;
string check = "Three";
for (int i = 0; i < N; i++){
string x;
cin >> x;
if (x == "Y"){
check = "Four";
break;
}
}
cout << check << endl;
}
Yが一つでも入っていたらFourになる。最初はそれに気づかず時間が掛かってしまった。また、最後のcheck
出力をfor文
の中に入れてしまっていたためWA
となってしまった。
/の特性と余剰を利用
Harshed Number
abc080_b.cpp
#include <bits/stdc++.h>
using namespace std;
int main() {
int N;
cin >> N;
int original_N = N;
int sum = 0;
while (N > 0) {
sum += N % 10;
N /= 10;
}
// 判定する(N の値は変わってしまっているので、予めコピーした値 original_N で判定)
if (original_N % sum == 0) {
cout << "Yes" << endl;
}
else {
cout << "No" << endl;
}
}
要はNの1の位をどのように取り出していくかということ、単純に10で割りつづけてそのあまりをsum
に加算しつづける。Nは10で割った時の商を代入し続けていく。
最後はoriginal_N
とsum
を用いて割り切れるか判定
各桁を加算するアルゴリズムは他でも使えそうなので備忘録として記録しておく。