1. 競プロする人
  2. AtCoder Beginner Contest 108
2023-12-11 13:37

AtCoder Beginner Contest 108

AtCoder Beginner Contest 108

https://atcoder.jp/contests/abc108


↓の提出コードを見ながらの聴取を推奨いたします
A:https://atcoder.jp/contests/abc108/submissions/46398155


Atcoderホームページ:https://atcoder.jp/home

サマリー

AtCoder Beginner Contestの第108回目では、A問題では、1以上K以下の正の整数から、偶数と奇数、1つずつの組を選ぶ個数を求める問題が出されています。B問題では、X、Y平面上に正方形があり、4つの頂点の座標が与えられる中で、2つの座標を復元する問題が出されています。

A問題: 偶数と奇数の組を選ぶ個数
AtCoder Beginner Contest 108回目、A問題、ペア、問題文。
1以上K以下の正の整数から、偶数と奇数、1つずつの組を選ぶ方法の個数を決めてください。
なお、選ぶ順番は考慮しません。
ん?
偶数と奇数、1つずつの組を選ぶ方法の個数。
入力例1は3、出力例は2。
2、1と2、3が条件を満たします。
Kは100まである。
入力例2が6の場合、出力例は9。
入力例3、11の場合は出力例30。
入力例4、50の場合は625。
えーっと?
なんじゃこれ。なんかアルゴリズムあるのかな?
とりあえず愚直にやってみましょうか。
Nイコール、インとインプ。
で、Lイコール、リスト作って、I、イン、I、4、I、N、G、1、Kプラス1。
これで1から、ん?1からでいいのかこれ。
1以上K以下、そうですね。
1からKまでの数字がLリストに入ったはずです。
あと、入力例1でちょっと見ときましょうか。
3、あれ?ネームK、あ。
Nで取ってるのにKで取っちゃったから。
レンジNプラス1ですね。
はい、1、2、3が入りましたので、
んー、二重ループにするか。
アンスイコール0、4IインレンジL、4JインレンジIから、
えー、Nプラス1。
4IインレンジもNプラス1ですね。
Nプラス1?ほんと?
いいか、Nプラス1。
いや、ちょっと怖いから連Lにしとこう。
で、えー、IF、I、えー、IF、L、I、パーセント、どこだ。
パーセント2。
パーセント2。
で、これイコール0。
AND、LJ、パーセント2。
NOTイコール0だったら、アンサープラスイコール1。
で、ELSE、LIF、で、逆だったら、アンサー1ですね。
LIパーセント、NOTイコール1、
かつ、LJが、
偶数だったら。
あれ、でもこれって、
1、2、3。
いや、まあいいか。
いけるはず。
プリントアン数。
なんか、ダブりそうな気もしましたが。
進んではいるはずだから大丈夫じゃない?
3、2、
6だと9。
6、9。
11は30。
数字大きくなっていくと不安になりますね。
11、30。
50は6、2、5が出たらOK。
50。
OK、6、2、5。
出力、というか、提出します。
はい。
はい、ACしました。
よかった。
B問題: 正方形の座標復元
B問題に行きます。
B問題。
ルインドスクエア。
問題文。
X、Y平面上に正方形があり、4つの頂点の座標は半時計回りに順番にX1、Y1からX4、Y4です。
なお、X軸は右向きに、Y軸は上向きにとることにします。
高橋君はこれら4つの座標のうち、X3、Y3とX4、Y4を忘れてしまいました。
X1、X2、Y1、Y2が与えられるので、
X3、Y3、X4、Y4を復元してください。
なお、これらの条件から、X3、Y3、X4、Y4は1位に存在し、整数となることが証明できます。
入力例は以下の形式で、標準入力から与えられるX、Yのそれぞれ1、2位ですね。
マップでとっていきます。
X1、Y1。
あれ、大文字になってる勝手に。
あ、MacのShiftの押しっぱ機能を使ってました。
いや、このまま使おう。
大文字、X1、Y1、X2、Y2。
便利だな、これ。
map.input.split。
で、マイナスになることもあるんですね。
入力例1は、X1、Y1が0、0。
X2、Y2が0、1。
出力例1。
多分、X3、Y3ですね、これ。
マイナス1、1。
X4、Y4がマイナス1、0。
4.00、0、1、マイナス1、1、マイナス1、0は、この順に正方形を半時計回りに見たときの4頂点をなします。
この順に。
X3、Y3イコール1、1。
X4、Y4、1、0は頂点が時計回りに並んでいるので、適さないことに注意してください。
えーっと。
1と2が与えられている半時計回り。
ん?半時計回り?
えー、半時計回りに順番に、でしょ?
XY、XYで与えられる。
0、0、スタートの半時計回りで、次が0、1。
お?
あ、えーっと。
0、0、0、1で上に上がる。
上に上がったから、半時計回りだから左に行かないといけない。
マイナス1、1、そうね。
Yの座標は一緒だから。
マイナスに行って、で、そのまま下に行く。
マイナス1、0。
これって、なんか求め方あった気がする。
ので。
えーっと。
座標、求め方、Python。
Pythonじゃなくて、もうそもそも数学知識でありそうですけどね。
2点の座標から距離を計算。
複数の座標。
あー、これ調べ方も。
これも、その、ドンピシャじゃないと出てこないから困るね。
X、Y平面上に正方形があり、4つの頂点の座標は半時計回りに順番です。
だから、反対っていうわけでもないんだよな。
マイナス1かければいいってわけでもない。
入力例2が2、3と6、6だった場合、30。
マイナス1、7。
んー。
なんかありそうですけどね。
座標を取得。
角度から座標。
えー。
正方形。
座標。
対角線とかにする?
対角線の求め方。
正方形の対角線の長さの求め方は三平方の定理。
長さは別にいらないんじゃない?
正方形の一辺に√2をかけるだけ。
正方形の一辺に√2をかけるだけ。
正方形の一辺。
あ、そうか。一辺がわかってるから。
√2。
対角線。
一辺、対角線。
座標。
えー。正方形、座標、求め方。
正方形、座標、求め方。
いやー。数学だな。
数学嫌いだな。
ふふふ。
なんでやってんだってな。
スカッケーPQRSが正方形となるときの点Pの座標を求めなさい。
おっ。これいいんじゃない?
スカッケー。
座標。
正方形。
座標の求め方?
え?なんだこれ。
んー解説を見ます。
本当か?
本当に見ていいか?
いいさあ。
いや無理だなこれ多分ひらめきがいるので
見ます
B問題
回転行列を知らないと解くのは難しい
dxイコールd2-d1
dyイコールy2-y1としたdxdyというベクトルを考える
するとx2y2からx3y3へのベクトルは
半時計回りに90度回転したものになる
これは回転行列を使うと解決できる
具体的には90度回転すると
dxイコール-dy
dyイコールdxになる
なので回転して足して答えるを2回やるとacが取れる
ん?ん?ん?
んー回答例が
cプラプラ
ではあるもののかろうじて読めんことはないか
一応ちょっとpythonの方でも
他の方の提出を見て学ぼうと思います
ということで今回はここまでにしておきます
また次回お疲れ様です
13:37

コメント

スクロール