AtCoder Beginner Contest 163の振り返り

今回で5回目のコンテスト参加となりました。今回は「Unrated」になってしまいました。 コロナウイルスの影響で参加者がめちゃくちゃいて、サーバ処理が追いつかなかったんですかね。。コンテストが始まると一気にサーバ負荷がかかるという特殊な状況ですが、運営側には頑張っていただきたいです。 今回はC問題まで解いたので、そこまでの解説をします。 A - Circle Pond 問題文 半径Rの円の周長を出力してください。 制約 1 ≤ R ≤ 100 入力は全て整数である。 解説 Pythonはmath.piで円周率を使えます。 回答 import math R = int(input()) print(2*R*math.pi) B - Homework 問題文 高橋君の夏休みはN日間です。 夏休みの宿題がM個出されており、i番目の宿題をやるにはAi日間かかります。 複数の宿題を同じ日にやることはできず、また、宿題をやる日には遊ぶことができません。 夏休み中に全ての宿題を終わらせるとき、最大何日間遊ぶことができますか? ただし、夏休み中に全ての宿題を終わらせることができないときは、かわりに’-1‘を出力してください。 制約 1 ≤ N ≤ 10^6 1 ≤ M ≤ 10^4 1 ≤ Ai ≤ 10^4 解説 この問題は高橋君の夏休み日数から宿題にかかる全日数を引くだけです。 回答 N, M = [int(_) for _ in input().split()] A = [int(_) for _ in input().split()] ans = N for i in range(M): ans -= A[i] if(ans < 0): print("-1") else: print(ans) C - management 問題文 N人の社員からなる会社があり、各社員には1,…,Nの社員番号が割り当てられています。 社員番号1の社員以外の全ての社員には、自分より社員番号が小さい直属の上司がちょうど1人います。 XさんがYさんの直属の上司であるとき、YさんはXさんの直属の部下であるといいます。 社員番号iの社員の直属の上司の社員番号がAiであることが与えられます。各社員について直属の部下が何人いるか求めてください。 ...

April 19, 2020 · 1 min · 143 words · Yu

AtCoder Beginner Contest 162の振り返り

今回で4回目のコンテスト参加となりました。結果として、C問題まではなんとか解くことができました。ですが、B問題を1回凡ミスしたことに気づかず20分後に再提出したこととC問題はPythonでは時間制限を突破できなくて、PyPyで提出をしてなんとか正解だったのであまり良くない内容でした。 まだまだ余裕でD問題に到達することができていないです。。 基礎力を強化するためにも、今回も振り返りをしていきます。(回答に記載しているコードは提出してACしたコードです。) A - Lucky 7 問題文 3桁の整数Nが与えられます。Nのいずれかの桁に数字の7は含まれますか? 含まれるなら Yes を、含まれないなら No を出力してください。 制約 100 ≤ X ≤ 999 解説 この問題は入力された3桁の文字数それぞれに「7」が含まれているかを確認すればOKです。 回答 N = input() if(N[0] == '7' or N[1] == '7' or N[2] == '7'): print("Yes") else: print("No") B - FizzBuzz Sum 問題文 FizzBuzz列a1,a2,…を次のように定めます。 iが3でも5でも割り切れるなら、ai = FizzBuzz そうではなくiが3で割り切れるなら、ai = Fizz そうではなくiが5で割り切れるなら、ai = Buzz そうではないなら、ai = i FizzBuzz列のN項目までに含まれる数の和を求めてください。 制約 1 ≤ X ≤ 10^6 解説 入力されたN項目までのそれぞれの数字をFizzBuzzで判別して、該当しない数字を足せばOKです。 回答 N = int(input()) ans = [] ans_num = 0 for i in range(N): s = i+1 if(s%3 == 0 and s%5 == 0): ans.append("FizzBuzz") elif(s%3 == 0): ans.append("Buzz") elif(s%5 == 0): ans.append("Buzz") else: ans.append(s) ans_num += s print(ans_num) C - Sum of gcd of Tuples (Easy) 問題文 $$ \sum_{a=1}^{K} \sum_{b=1}^{K} \sum_{c=1}^{K} gcd(a, b, c) $$ を求めてください。 ただし、gcd(a, b, c)はa,b,cの最大公約数を表します。 ...

April 12, 2020 · 2 min · 294 words · Yu

AtCoder Beginner Contest 160の振り返り

今回で3回目のコンテスト参加となりました。前回が2月22日(土)だったので1ヶ月ぶりでした。この1ヶ月、AtCoderの問題に取り組んでいなかったので、散々な結果となりました。。(日頃からコツコツとやらないとダメですね。) 今回の結果はC問題が解けずに終わってしまい、悔しかったです。今後、類似問題が出てきても解けるように振り返りをします。 今回の僕の結果はこちらから。(弱弱なので、お恥ずかしい。笑) A - Coffee 問題文 ある長さ6の英小文字からなる文字列がcoffeeに似ているとは、3文字目と4文字目が等しく、5文字目と6文字目も等しいことを言います。与えられる文字列Sがcoffeeに似ているか判定してください。 制約 Sは長さ6の英小文字からなる文字列である。 解説 この問題は長さ6の文字列が3文字目 = 4文字目、5文字目 = 6文字目の時にYes、違う時にNoを表示すればOKです。 回答 N = input() if(N[2] == N[3] and N[4] == N[5]): print("Yes") else: print("No") B - Golden Coins 問題文 高橋君は金色の硬貨が好きです。自分が持っている500円硬貨1枚につき1000、5円硬貨1枚につき5の嬉しさを得ます。高橋君はX円を持っています。これを高橋君の嬉しさが最大になるように両替したとき、高橋君の嬉しさはいくらになりますか? (なお、利用できる硬貨は500円玉、100円玉、50円玉、10円玉、5円玉、1円玉の6種類とします。) 制約 0≤X≤10^9 Xは整数 解説 高橋君が持っているX円が500円何枚分(Y枚)あるのかを求めてから、X=X-500*Y円をして、同様にX円が5円何枚分(Z枚)あるか求めます。 その後、Y*1000+Z*5を表示すればOKです。 回答 math.floorを使うことで小数点以下を切り捨てしています。 import math X = int(input()) total_500 = 0 total_5 = 0 total_count = 0 if(X >= 500): total_500 = math.floor(X/500) total_count += total_500 * 1000 X -= total_500 * 500 if(X >= 5): total_5 = math.floor(X/5) total_count += total_5 * 5 X -= total_5 * 5 print(total_count) C - Traveling Salesman around Lake 問題文 1周Kメートルの円形の湖があり、その周りにN軒の家があります。i番目の家は、湖の北端から時計回りにAiメートルの位置にあります。 家の間の移動は、湖の周りに沿ってのみ行えます。 いずれかの家から出発してN軒すべての家を訪ねるための最短移動距離を求めてください。 制約 2≤K≤10^6 2≤N≤2×10^5 0≤A1<…<AN<K 入力中のすべての値は整数である。 解説 この問題を解いているとき、全ての出発地点からの最短経路を全部計算するのかなと思ってしまい、実装方法が訳分からずに途中で解くのをやめました。。 解き方として、円形の湖沿いを通って全ての家を通る必要があるので、最短経路を求めるには家と家の距離が最大の道を通らなければいいみたいです。(こういう問題を円環っていうらしいです。) 以下の画像のように、湖を2周した長さを直線で表示すると、それぞれの家と家の距離がわかるので、最大の道をKメートルから引いてあげます。 ...

March 29, 2020 · 1 min · 145 words · Yu

AtCoder用にPythonの環境構築

本記事は以前Qiitaに投稿した内容を本ブログに持ってきています。 はじめに 最近、AtCoderを始めました。 AtCoderは競技プログラミングサイトで、毎週リアルタイムのコンテストが開催されていて、AtCoderで評価されたレーティングを利用して、転職活動ができるAtCoderJobsというサービスが話題になっているそうです。 最初、シェルがfishでHomebrewなどが入っている状態で色々試していましたが、うまくいかなかったので、Mac環境をきれいにして環境構築をしました。 環境 macOS Catalina 10.15.2 Homebrew 2.1.15 bash 3.2.57 シェルをbashに戻す ターミナルで以下コマンドを叩いて、ターミナルの再起動をするとシェルがbashに戻ります。 $ chsh -s /bin/bash Homebrewをアンインストールする 以下コマンドを叩いてパスワードを入力すると、Homebrewをアンインストールできます。 $ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)" Homebrewの公式サイトに記載されています。 Homebrewインストールする 以下コマンドを叩く。 $ usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" インストールできたか確認するために、以下コマンドを叩きます。 $ brew doctor すると、Warningが大量に出たので、brew doctorでWarningが出たので解決方法まとめました。(for Mac)を参考に解決しました。 Warning: Unbrewed dylibs were found in /usr/local/include. のログに関しては残すことを忘れてしまっていたので、上記記事を引用しています。 Please note that these warnings are just used to help the Homebrew maintainers with debugging if you file an issue. If everything you use Homebrew for is working fine: please don't worry or file an issue; just ignore this. Thanks! Warning: Unbrewed header files were found in /usr/local/include. If you didn't put them there on purpose they could cause problems when building Homebrew formulae, and may need to be deleted. Unexpected header files: /usr/local/include/arith.h /usr/local/include/binary_log_types.h /usr/local/include/cdt.h /usr/local/include/cgraph.h /usr/local/include/color.h /usr/local/include/decode.h /usr/local/include/demux.h /usr/local/include/encode.h /usr/local/include/errmsg.h /usr/local/include/fcfreetype.h /usr/local/include/fcprivate.h /usr/local/include/fontconfig.h /usr/local/include/freetype/config/ftconfig.h /usr/local/include/freetype/config/ftheader.h /usr/local/include/freetype/config/ftmodule.h /usr/local/include/freetype/config/ftoption.h /usr/local/include/freetype/config/ftstdlib.h /usr/local/include/freetype/freetype.h /usr/local/include/freetype/ftadvanc.h /usr/local/include/freetype/ftbbox.h /usr/local/include/freetype/ftbdf.h /usr/local/include/freetype/ftbitmap.h /usr/local/include/freetype/ftbzip2.h /usr/local/include/freetype/ftcache.h /usr/local/include/freetype/ftchapters.h /usr/local/include/freetype/ftcid.h /usr/local/include/freetype/ftdriver.h /usr/local/include/freetype/fterrdef.h /usr/local/include/freetype/fterrors.h /usr/local/include/freetype/ftfntfmt.h /usr/local/include/freetype/ftgasp.h /usr/local/include/freetype/ftglyph.h /usr/local/include/freetype/ftgxval.h /usr/local/include/freetype/ftgzip.h /usr/local/include/freetype/ftimage.h /usr/local/include/freetype/ftincrem.h /usr/local/include/freetype/ftlcdfil.h /usr/local/include/freetype/ftlist.h /usr/local/include/freetype/ftlzw.h /usr/local/include/freetype/ftmac.h /usr/local/include/freetype/ftmm.h /usr/local/include/freetype/ftmodapi.h /usr/local/include/freetype/ftmoderr.h /usr/local/include/freetype/ftotval.h /usr/local/include/freetype/ftoutln.h /usr/local/include/freetype/ftparams.h /usr/local/include/freetype/ftpfr.h /usr/local/include/freetype/ftrender.h /usr/local/include/freetype/ftsizes.h /usr/local/include/freetype/ftsnames.h /usr/local/include/freetype/ftstroke.h /usr/local/include/freetype/ftsynth.h /usr/local/include/freetype/ftsystem.h /usr/local/include/freetype/fttrigon.h /usr/local/include/freetype/fttypes.h /usr/local/include/freetype/ftwinfnt.h /usr/local/include/freetype/t1tables.h /usr/local/include/freetype/ttnameid.h /usr/local/include/freetype/tttables.h /usr/local/include/freetype/tttags.h /usr/local/include/ft2build.h /usr/local/include/geom.h /usr/local/include/graphviz_version.h /usr/local/include/gvc.h /usr/local/include/gvcext.h /usr/local/include/gvcjob.h /usr/local/include/gvcommon.h /usr/local/include/gvconfig.h /usr/local/include/gvplugin.h /usr/local/include/gvplugin_device.h /usr/local/include/gvplugin_layout.h /usr/local/include/gvplugin_loadimage.h /usr/local/include/gvplugin_render.h /usr/local/include/gvplugin_textlayout.h /usr/local/include/gvpr.h /usr/local/include/lt_dlloader.h /usr/local/include/lt_error.h /usr/local/include/lt_system.h /usr/local/include/mux.h /usr/local/include/mux_types.h /usr/local/include/my_command.h /usr/local/include/my_list.h /usr/local/include/mysql.h /usr/local/include/mysql/client_plugin.h /usr/local/include/mysql/plugin_auth_common.h /usr/local/include/mysql/udf_registration_types.h /usr/local/include/mysql_com.h /usr/local/include/mysql_time.h /usr/local/include/mysql_version.h /usr/local/include/mysqld_error.h /usr/local/include/mysqlx_ername.h /usr/local/include/mysqlx_error.h /usr/local/include/mysqlx_version.h /usr/local/include/pack.h /usr/local/include/pathgeom.h /usr/local/include/pathplan.h /usr/local/include/png.h /usr/local/include/pngconf.h /usr/local/include/textspan.h /usr/local/include/types.h /usr/local/include/usershape.h /usr/local/include/xdot.h Warning: Your Xcode (10.3) is outdated. Please update to Xcode 11.3 (or delete it). Xcode can be updated from the App Store. Warning: Broken symlinks were found. Remove them with `brew cleanup`: /usr/local/lib/node_modules/expo-cli/node_modules/.bin/detect-libc /usr/local/lib/node_modules/expo-cli/node_modules/.bin/prebuild-install まずは、Warning: Unbrewed header files were found in /usr/local/include.の解決をします。 ...

March 16, 2020 · 6 min · 1133 words · Yu