imomoの勉強記録

主に勉強の記録などを残していきます

ABC168に参加しました

AtCoderのコンテストに参加した際の結果と考え方、反省点などを書いていきます。
コンテストページはこちら

解いた/挑んだ問題

A問題

問題の概要

3ケタの整数Nが与えられる。
Nの一の位が2,4,5,6,9の時'hon'と、0,1,6,8の時'pon'と、3の時'bon'と出力せよ

制約
  • Nは999以下の正の整数
どのように考えたか

stringで受け取り、s.back()で末尾をとりifで比較する

結果

一回目は焦ってしまい2回目でAC
・提出ししたコード

#include"bits/stdc++.h"

#define rep(i, n) for (int i = 0; i < (int)(n); i++)
#define REP(i, n) for (int i = 1; i < (int)(n); i++)
using ll = long long;
using namespace std;

int main() {
	string s;
	cin >> s;
	char c = s.back();
	string ans;
	if (c == '2' || c == '4' || c == '5' || c == '7' || c == '9')ans = "hon";
	else if (c == '3')ans = "bon";
	else ans = "pon";
	cout << ans << endl;
	return 0;
}

ベタ書きなので、改善がもしできるならしてみたい

ACまでの時間

ACしたのはコンテスト開始から24分後です。

f:id:iiiimmmmo:20200517222945p:plain
ABC168_A

B問題

問題の概要

文字列Sと数字Kが与えられる
Sの長さがK以下であればそのままSを出力し、
SがKより大きいときは、先頭K文字を切り出し、末尾に'...'をつけて出力せよ

制約
  • Kは1以上100以下の整数
  • Sは英小文字からなる文字列
  • Sの長さは1以上100以下
どのように考えたか

S.size()をとり、比較してKを超えていたらsubstrで切り取り末尾に'...'を追加する

結果

一発AC
提出したコード

#include"bits/stdc++.h"

#define rep(i, n) for (int i = 0; i < (int)(n); i++)
#define REP(i, n) for (int i = 1; i < (int)(n); i++)
using ll = long long;
using namespace std;

int main() {
	string s;
	int n;
	cin >> n >> s;
	
	if (n >= s.size())cout << s << endl;
	else {
		string ans = s.substr(0, n) + "...";
		cout << ans << endl;
	}
	return 0;
}

比較的簡単な問題だったと思う substrで一度間違えたことがあるので少し怖かった

ACまでの時間

ACしたのはコンテスト開始から7分後です。

f:id:iiiimmmmo:20200517223422p:plain
ABC168_B

C問題

問題の概要

時計の時針と分針の長さはそれぞれAセンチ、Bセンチです。
H時M分の時、2本の固定されていない端点は何センチメートル離れているでしょうか

制約
  • 入力はすべて整数
  •  1 \leq A, B \leq 1000
  • 0 \leq H \leq 11
  • 0 \leq M \leq 59
どのように考えたか

90度以下の三角形を作り、ピタゴラスの定理三角関数を用いて求める

結果

分からなかったので提出していません
提出したコード
なし
調べ調べコードを書きましたが、三角関数の扱い方に苦戦し、値を導けませんでした。

ACまでの時間

ACできていません

結果

コンテスト結果

ABの2完でした。
数学分からないと解けない問題で順位をかなり落としたので辛いです。

f:id:iiiimmmmo:20200517225251p:plain
ABC168

順位、パフォーマンス変動

順位は前回より3500近く下がり9701位、レーティングは385となりました。

f:id:iiiimmmmo:20200517231843p:plain
コンテスト成績表


f:id:iiiimmmmo:20200517231936p:plain
ABC168を終えた時点でのレーティング

反省点

灰色に落ちました
数学から離れているため明らかに数学問題に弱いのを改善していきたいです。。