ABC079 D Wall
問題概要
1つの数字を から に変えるコストを とする。
行列 が与えられ、 のとき上から 番目、左から 番目のマスに数字 が書かれていて、 のとき上から 番目、左から 番目のマスに数字が書かれていないことを意味する。
マスに書かれたすべての数字を1にする最小コストを答えよ。
制約
のとき
のとき
解法
数字を頂点番号だと思って、各頂点から頂点1への最短経路を求めます。(ワーシャルフロイドが一番書く量が少ないのでワーシャルフロイドを書いた)
あとはそれぞれの数字がマスにいくつ書かれているかを計算して、コストを掛けて出力する。
ARC083(ABC074) D Restoring Road Network
問題概要
次正方行列 が与えられる。すべての について、 の 行 列成分が頂点 と頂点 の最短距離となるようなグラフが存在するかを判定する。また、存在する場合、そのようなグラフのうち辺のコストの総和が最小となるものについて、その総和を求めよ。
制約
のとき
のとき
解法
実質ワーシャルフロイド(?)
- 頂点 から頂点 に行く最短距離が、頂点 から頂点 を経由して頂点 に行く最短距離よりも長いことはありえない*1、もしそうなっていたら、そのようなグラフは存在しないので-1を出力する
- 頂点 から頂点 に行く最短距離が、頂点 から頂点 を経由して頂点 に行く最短距離と等しいならば、頂点 と頂点 の間にある辺は取り除いて良い
を実装する
(2は未証明だけど投げたら通ったのであんまり理解してないです)
*1:距離の公理
ABC084 D 2017-like Number
ACPC2017参加記
会津大学競技プログラミング合宿2017 : ATND に参加してきました。
day 0
今年も会津の地に前日入りした。昼過ぎの京都発の新幹線に乗って、会津若松駅に着いたのが18時ごろだったので、やっぱり会津は遠いな〜と1年ぶりに思った。
新幹線の中では主にデレステをしていた。
駅前のマルモ食堂の会津ラーメンです! pic.twitter.com/3eEYeO2yck
— あんずどーなつうさぎ (@wk1080id) 2017年9月17日
ホテルは駅前だったので移動が楽だった。ホテルではデレステをしていた。
会津、神の地では(10連で念願の結城晴出ましたありがとうございます!!!! pic.twitter.com/urqSFA1Frw
— あんずどーなつうさぎ (@wk1080id) 2017年9月17日
なんか合宿前の高揚感とガシャの引きによる高揚感で4時まで眠れず(ア
day 1 立命館大学セット
ぽきた
— あんずどーなつうさぎ (@wk1080id) 2017年9月17日
起床のプロなので7時半に起きた。
ぼく「あれ?スタミナが全回復してないぞ?ちゃんと寝たはずなのにおかしいな…」
— あんずどーなつうさぎ (@wk1080id) 2017年9月17日
ホテルの無料朝食おいしい。
— あんずどーなつうさぎ (@wk1080id) 2017年9月18日
ヅに島村卯月の中の人が来るらしくて羨ましい。
へごちんー! pic.twitter.com/kkV86lJhIy
— あんずどーなつうさぎ (@wk1080id) 2017年9月18日
初日なので自己紹介があって、(何かネタに走ろうかとも考えていたけど)普通に名前だけ言った。ウクニキアさん(@ukuku09)が面白かった。
コンテストは、立命館がジャッジ側だった。コンテストが始まってから、解説スライドを作りながら自分たちが考えた問題が解かれていくのを眺めてた。
コンテスト後にC問題の解説*1をした。
原案はAとCと若干B*2。Aはもともとシャトルランを題材にしていて、2回連続で線にたどり着けなかったら終了みたいなのを考えていたけど、シャトルランの定義が難しいということで丸付けになった。CはTwitterをしていたら降ってきたもの。Twitterから作問のインスピレーションを得ることが多い。
初日の懇親会は会津の人がたくさんいるテーブルにいたので、会津の人の話を聞いていた。その場にいないのにbeetさん(@beet_aizu)とうしさん(@ei1333)が話題にされていた。ツカサさん(@tsukasa_diary)と隣だったので北海道の話も聞いた。
ホテル帰ってかららずくん(@Luzhiled)とめる先輩(@ixmel)と一緒にデレステをした(DEGwerさんもいた)。
メンバーが競プロのプロやが
— あんずどーなつうさぎ (@wk1080id) 2017年9月18日
日付変わる前くらいに解散して明日の準備をしてからデレステをした。
さて、今夜もね、デをして寝ようと思うのですが、
— あんずどーなつうさぎ (@wk1080id) 2017年9月18日
デレステ、やると目が醒めることで有名
— あんずどーなつうさぎ (@wk1080id) 2017年9月18日
眠気が完全に飛んだ
— あんずどーなつうさぎ (@wk1080id) 2017年9月18日
どうしようかなぁ……
— あんずどーなつうさぎ (@wk1080id) 2017年9月18日
よし!デレステしよ!w
結局グダグダ4時まで起きてた(ア
day 2 会津大学セット
朝起きるのが世界一下手すぎる(二度寝した
— あんずどーなつうさぎ (@wk1080id) 2017年9月18日
朝起きるのが世界一下手なので二度寝して8時半に起きた。それでも起床のプロなので(?)無料朝食と集合時間には間に合った。
コンテストに問題を解く側として参加。
@DAyamaCTF さんと @Luzhiled さんと一緒に、チームacpc_hayaokiで出ます!
— あんずどーなつうさぎ (@wk1080id) 2017年9月19日
B問題を担当して、1時間くらいかけてバグらせながらACした。そのあとはDの考察に加わったり問題を読んだりしてたが、とくに貢献はできず。
ABCEFIの6完でした(個人で言えばBの1完(ア
— あんずどーなつうさぎ (@wk1080id) 2017年9月19日
解説はDとMが頭良すぎて素晴らしくてやばかった。
解説が終わってから懇親会会場に移動するまでの間にkzyKTさん(@kzyKT_M)とK問題について少し話した。
K問題を見たぼく「Chino……Chino……(ここで脳死
— あんずどーなつうさぎ (@wk1080id) 2017年9月19日
懇親会に移動するときに近くにうしさんがいたので少しお話しした。
🐮さんに話しかけたい
— あんずどーなつうさぎ (@wk1080id) 2017年9月19日
🐮🐇
— あんずどーなつうさぎ (@wk1080id) 2017年9月19日
が、話すのが苦手なのですぐにTwitterに逃げた。
Twitterを眺める会をしています
— あんずどーなつうさぎ (@wk1080id) 2017年9月19日
ACPCday2、リスト荒らし担当です
— あんずどーなつうさぎ (@wk1080id) 2017年9月19日
2日目の懇親会は右隣にらずくん、左隣にkzyKTさん、正面にめる先輩がいて、途中でみんな揃ってデレステの宝くじとガシャをやり始めたのがハイライト。
ホテルに帰って来たためデをします
— あんずどーなつうさぎ (@wk1080id) 2017年9月19日
ホテル帰ってかららずくん(@Luzhiled)とめる先輩(@ixmel)と一緒にデレステをした。
日付変わる前くらいに解散して明日の準備をしてからデレステをした。
3日目は集合が早いので早く寝ようと思っていたら気づいたら3時回ってた(ア
day 3 北海道大学セット
早起きするのが世界一苦手
— あんずどーなつうさぎ (@wk1080id) 2017年9月19日
早起きするのが世界一苦手なので7時半に起きた。それでも起床のプロなので(?)無料朝食と集合時間には間に合った。
コンテストに問題を解く側として参加。
チーム ACPC_Anzio_High(with @__KasSA さんと@__imulan__ さん)です!
— あんずどーなつうさぎ (@wk1080id) 2017年9月20日
アンツィオ高校が何のアニメかわかりませんでした><
— あんずどーなつうさぎ (@wk1080id) 2017年9月20日
チーム名は何かのアニメに出てくる高校の名前らしいです(よく知らず……
B問題担当で、問題を見た瞬間数学で内心*3ハイテンションだった。が、考えてみると難しすぎて、imulanさんと一緒に考察していた。1時間くらいかかったけど、0WAで通せた(実装したのはimulanさんなのでぼくが通したわけではない)のは良かった。
Bを通した段階で チームとしてはABCの3完でDの考察も結構進んでいて、その後特に貢献とかはできなくて、考察や実装を眺めていた。
チームとしてはABCDEGの6完、ぼくはBの考察担当でした(1問もsubmitしてない
— あんずどーなつうさぎ (@wk1080id) 2017年9月20日
おみやげを買って会津若松で電車に乗ろうとしたらうしさんとらずくんに会った。のでデレステをした。(立命館勢が乗り込んだ後に他のACPC参加者も乗ってきたので競プロer率がやばかった)
郡山で新幹線の乗り換えまで時間があったのでアニメイトに行った。広かった。
— あんずどーなつうさぎ (@wk1080id) 2017年9月20日
新幹線に乗ってる間はデレステをした。
まとめ
問題はあまり解けなかったけど、普段合わない競技プログラマーと直接会って交流できたのでよかった。とても楽しかった。
次の合宿は春のRUPCなので、それまでにもっと難しい問題を解けるようになりたい。
RCOさんのおかげでおいしい食事を食べられたので良かった。懇親会と牛丼ありがとうございました!
会津大学のみなさんもありがとうございました!
ヅに行ったのに大学に生えるセグ木と甜菜を観測してくるの忘れてた……
— あんずどーなつうさぎ (@wk1080id) 2017年9月20日
ICPC2017国内予選 参加記
ICPC国内予選に出ました。
参加記を書くまでが国内予選みたいな風習があるっぽいので書きます。
予選前
去年のチームは同学年3人で組んでいたので今年も同学年で組むか〜となって、yebi君(@sigsigma19)としゅもん君(@shumon_84)と組むことに(去年とメンバーは違う)。
1回生たちも出るみたいだから負けたくない!って3人でずっと言ってた(これがフラグとなる)(たぶん)。
6月末に部内コンでチーム練を始めたら、1回生チームたちと互角の戦い(ほんまか?)をしていて、これはやばいとなる。
模擬国内は3人で出て、2完でした。B問題を担当してバグらせながら通した。
1回生に負けたのでお通夜だった。悲しいね。
本当に予選で1回生チームに負けることが現実的になったので、それから予選までの2週間はおびえていた。
部内コン(AOJ-ICPCの問題以外も含まれている)では1回生に負け続け精神的負担が大きかった。今年の1回生はプロが多い。っょぃ。
前日は(きっと使わないであろう)ライブラリをいくつか印刷した。あと、超健康児(?)なので日付が変わる前に寝た。
予選当日は普通に授業日だったので直前まで授業を受けていました。
予選開始
とりあえず問題文の印刷が終わるまでyebi君がA問題を解くという話だったので、A問題を任せる(といいつつ印刷に時間がかかっていたので3人で見てた)。O(N^2)の全探索が間に合うのでそれでいこうとなってyebi君が書いてA問題をAC。 そのころに問題文が来たので、B問題を読んだ。yebi君がC、しゅもん君はDを考え始める。B問題は前から見ていくだけでできるでしょ!wとなったのでコーディングを開始。が、実装が終わってサンプルを試すと合わなかったので、印刷クエリを投げて、yebi君に替わってCの実装をしてもらうことに。その間紙デバッグをしていた。Dはなんか二部マッチング臭がすると言われて、誰も書けないのでDは諦めるか〜みたいな話をした。しゅもん君には他の問題に目を通してもらうことにした。
Cの実装が終わってサンプルが合わないようだったので、コーディングを替わってもらった。Bはサンプル出力が合ったのでsubmitしたらWAでつらい気持ちになった。 印刷クエリを投げてyebi君に交代したら、Cが通った。プロ。
自分はというと、サンプルが合ってるのにWAでどこが間違っているかわからなかった(世界一頭が悪い)ので、しゅもん君にB問題をバトンタッチして他の問題を考察することにした。Eの構文解析は全くできる気がしなくてパスして、Fの折りたたむやつは去年の会津合宿の立命セットぽさを感じて(よく考えたらそうでもない)、無理そうな雰囲気を感じ取った。Gはdfsかbfsでできそうな感じがした。Hは幾何だから考えたくもないと思って放置。
一番できそうなGの考察をyebi君としていた。各部屋を1度しか通れないことから、対角線に移動するのは不可能だとわかるので、宝の取り方は左上->左下->右下->右上->左上の順番だけ考えればいいということがわかる。宝の場所に移動するまでに遠回りをすると通ることのできない場所が増えてしまうので、最短距離のルートで通ればいいんじゃないかとなる。しゅもん君の実装が終わり次第yebi君にGを実装してもらうことにしてHを考えてみる。
Hは移動する頂点と移動先の頂点を決めれば、2回の移動で頂点を重ねられることと、5回以上の操作が必要な場合はそこで計算をやめていいので、場合分けすればいけるか?となった(が、幾何ライブラリはあるものの使いこなせないので無理ゲー臭がしたので諦めた)(あと、幾何ライブラリを写すのに時間がかかりすぎる)。
しゅもん君がバグらせながらもB問題を通してくれたので、Gをyebi君に書いてもらう。
その間にEを少し考察したが、できそうにないので、しゅもん君とともに実装を見ていた。最後まで実装できずにコンテストが終了。
結果は3完99位でした。
戦犯すぎてつらい(1ACもできずバグを量産した
— 素数うさぎ りかさん (@wk1080id) 2017年7月14日
なお1回生チームに負けた。先輩ってなんですか。後輩がプロなので先輩を名乗るのをやめたい気持ちでいっぱい。
予選後
なーう pic.twitter.com/2zbGvnEPxH
— 素数うさぎ りかさん (@wk1080id) 2017年7月14日
部室で菓子パしながらゲームとかで盛り上がってた。
22時くらいに警備員さんにはよ帰れって追い出されて辛かった。
そういえば去年の国内予選でもBをバグらせてACできなかったなあとか思い出して悲しい気持ちになった。成長できてないじゃん。実質バグ担当。つらい。
次のチーム戦はおそらく会津合宿になるだろうから、それまでにもっと(主にグラフ系の)知識をつけたいなと思った(その前に簡単な問題をバグらせる癖を直したい)。
チーム名について
ICPC参加登録の直前まで名前がきまっていなくて、どうしようとなったときに、素数うさぎ関連にしないかということになって(ぼくが言い出したわけではない)、Prime Rabbitになった。が、某がごちうさ要素を入れてもいいんじゃないかとか言い始めたので、アルファベット数が575になる「prime rabbits house」を提案してみたらなぜかそれでいくことになった。なんでみんなそんなに素数うさぎが好きなんだろう……。
ABC008 C コイン
数学ができないので。
期待値問題は苦手です。
C: コイン - AtCoder Beginner Contest 008 | AtCoder
問題概要
枚のコインを無作為に一列に並べる。左端から順に、そのコインよりも右側にある、そのコインに書かれた数 の倍数が書かれたコインをすべてひっくり返す。最終的に表を向いている(偶数回反転した)コインの枚数の期待値を求めよ。
制約
満点解法
期待値は、起こりうる確率を足し合わせることで求められる。よって、各コインについて、並べ方によって表を向く確率を計算して、それを足し合わせるという方針。
今見ているコインをCとすると、Cをひっくり返すことに関わるコインはCの約数が書かれているコインのみである。よって、Cの約数が書かれているコインの数に注目する。
Cが表を向いている(偶数回ひっくり返えす)とき、Cの左側にはCの約数が書かれたコインが偶数枚ある。
このことから、Cの約数が書かれたコインの数をSとすると、
Cが表を向いている場合の数は
- Sが奇数のとき 通り
- Sが偶数のとき 通り
となる。
よって、Cが表を向いている確率は
- Sが奇数のとき
- Sが偶数のとき
であるので、これを各コインについて足し合わせればよい。
計算量は 。
Submission #1241223 - AtCoder Beginner Contest 008 | AtCoder
感想
数学は苦手。
今回は解説を見たけど、期待値問題を自力で解けるようになりたい。
もしも日付を約分することができたなら
あーーもう3/27か
— うし (@ei1333) 2017年3月27日
約分して1/9にしたい(また春休みが来るので
— うし (@ei1333) 2017年3月27日
というツイートが流れてきて、「日付を約分できたら1年はどんな感じになるのかなあ」と思ったのがきっかけ。
日付を約分できるとして、約分前と約分後の日付を同一視できるとすれば、1年は何日になるのだろうか……
— りかさん (@wk1080id) 2017年3月27日
@wk1080id 9日で年末に行けますね
— 浅葱 #けもフレの5話の活気を取り戻せ (@asagi_a4ac) 2017年3月27日
1/1,1/2=12/24,12/25,12/26,12/27,12/28,12/29,12/30,12/31
あー何種類の日付があるのかみたいなことを考えてました https://t.co/dOSNtIVPxg
— りかさん (@wk1080id) 2017年3月27日
@wk1080id 日と月が互いに素なものを数えればいいからオイラーのトーティエント関数とかで計算できそう(したくはない)
— ε (@kyo_math1729) 2017年3月27日
@asagi_a4ac @wk1080id 1/1,1/2=2/4,2/5=12/30,12/31の4日が最短っぽそう
— かっさ(Yang33) (@__KasSA) 2017年3月27日
ということで、プログラムを書いて計算しました。検証は
- 1年間には何種類の日付が存在するのか
- 1年間は最短で何日と言えるのか
です。あらかじめ言っておきますが、ソースコードの可読性は低いです。はい。言語はc++です。
Q. 1年間には何種類の日付が存在するのか
結論から言うと、231日です。
解法1
素数を高速に求めるエラトステネスの篩っぽいやり方で計算してみた。
#include<iostream> using namespace std; int main(void) { int days[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};//各月の日数 int ans=0; int date[13][32]={}; for(int i=1;i<=12;i++){ for(int j=1;j<=31;j++){ if(days[i]<j)break; if(date[i][j])continue; ans++; for(int k=2;i*k<=12&&j*k<=days[i*k];k++) date[i*k][j*k]++; } } cout<<ans<<endl; }
解法2
月と日の最大公約数が1のペアだけ数えればよくね?みたいになったので、gcdを計算する方法で書いた。
(互いに素の話をはじめに@kyo_math1729 さんがしていたのをすっかり忘れていた)
#include<iostream> #include<algorithm> using namespace std; int main(void) { int days[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};//各月の日数 int ans=0; for(int i=1;i<=12;i++) for(int j=1;j<=31;j++){ if(days[i]<j)break; if(__gcd(i,j)==1)ans++; } cout<<ans<<endl; }
__gcd関数って便利ですね。
Q. 1年間は最短で何日と言えるのか
これまた結論から言うと、4日です。
@asagi_a4ac さんの言う通り、1/1 -> 1/2 (2/4) -> 2/5 (12/30) ->12/31 が最短でした。
(追記:これは日付を巻き戻すことを考慮していません。なので、たとえば、1/31に行くときに1/1 -> 2/2 -> 2/1 -> 1/31 という動きかたはしないものとしています。)
解法1
再帰関数に突っ込むという方法。12/31から戻っていくと、貪欲に計算できます(たぶん)。
#include<iostream> #include<algorithm> using namespace std; int days[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};//各月の日数 int date_num(int month,int day){ int same_month=month/__gcd(month,day); int same_day=day/__gcd(month,day); if(same_month==1 && same_day==1)return 1; if(same_day==1){ return date_num(same_month-1,days[same_month-1])+1; }else{ return date_num(same_month,same_day-1)+1; } } int main(void) { cout<<date_num(12,31)<<endl; }
解法2
dp[i][j]:=i月j日にたどり着ける最短日数
として、DP(動的計画法)で求める方法。
#include<iostream> #include<algorithm> using namespace std; #define INF 1e9 int days[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};//各月の日数 int main(void) { int i,j; int dp[13][32]; for(int i=1;i<=12;i++) for(int j=1;j<=31;j++) dp[i][j]=INF; //初期化 dp[1][1]=1; for(int i=1;i<=12;i++) for(int j=1;j<=31;j++){ if(days[i]<j)break; if(days[i]==j){ if(i==12)break; dp[i+1][1]=min(dp[i+1][1],dp[i][j]+1); break; } dp[i][j+1]=min(dp[i][j+1],dp[i][j]+1); for(int k=2;i*k<=12&&j*k<=days[i*k];k++) dp[i*k][j*k]=min(dp[i*k][j*k],dp[i][j]); } cout<<dp[12][31]<<endl; }
おまけ
1年のそれぞれの日付が最短何日でたどり着けるのかを調べた。
使ったソースコードはこれ。最後の出力を少し変えただけ。
#include<iostream> #include<algorithm> using namespace std; #define INF 1e9 int days[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};//各月の日数 int main(void) { int i,j; int dp[13][32]; for(int i=1;i<=12;i++) for(int j=1;j<=31;j++) dp[i][j]=INF; //初期化 dp[1][1]=1; for(int i=1;i<=12;i++) for(int j=1;j<=31;j++){ if(days[i]<j)break; if(days[i]==j){ if(i==12)break; dp[i+1][1]=min(dp[i+1][1],dp[i][j]+1); break; } dp[i][j+1]=min(dp[i][j+1],dp[i][j]+1); for(int k=2;i*k<=12&&j*k<=days[i*k];k++) dp[i*k][j*k]=min(dp[i*k][j*k],dp[i][j]); } for(int i=1;i<=12;i++) for(int j=1;j<=31;j++){ if(days[i]<j)break; cout<<i<<"月"<<j<<"日は"<<dp[i][j]<<"日目"<<endl; } }
で、結果はこうなりました。
1月1日は1日目 1月2日は2日目 1月3日は3日目 1月4日は4日目 1月5日は5日目 1月6日は6日目 1月7日は7日目 1月8日は8日目 1月9日は9日目 1月10日は10日目 1月11日は11日目 1月12日は12日目 1月13日は13日目 1月14日は14日目 1月15日は15日目 1月16日は16日目 1月17日は17日目 1月18日は18日目 1月19日は19日目 1月20日は20日目 1月21日は21日目 1月22日は22日目 1月23日は23日目 1月24日は24日目 1月25日は25日目 1月26日は26日目 1月27日は27日目 1月28日は28日目 1月29日は29日目 1月30日は30日目 1月31日は31日目 2月1日は32日目 2月2日は1日目 2月3日は2日目 2月4日は2日目 2月5日は3日目 2月6日は3日目 2月7日は4日目 2月8日は4日目 2月9日は5日目 2月10日は5日目 2月11日は6日目 2月12日は6日目 2月13日は7日目 2月14日は7日目 2月15日は8日目 2月16日は8日目 2月17日は9日目 2月18日は9日目 2月19日は10日目 2月20日は10日目 2月21日は11日目 2月22日は11日目 2月23日は12日目 2月24日は12日目 2月25日は13日目 2月26日は13日目 2月27日は14日目 2月28日は14日目 3月1日は15日目 3月2日は16日目 3月3日は1日目 3月4日は2日目 3月5日は3日目 3月6日は2日目 3月7日は3日目 3月8日は4日目 3月9日は3日目 3月10日は4日目 3月11日は5日目 3月12日は4日目 3月13日は5日目 3月14日は6日目 3月15日は5日目 3月16日は6日目 3月17日は7日目 3月18日は6日目 3月19日は7日目 3月20日は8日目 3月21日は7日目 3月22日は8日目 3月23日は9日目 3月24日は8日目 3月25日は9日目 3月26日は10日目 3月27日は9日目 3月28日は10日目 3月29日は11日目 3月30日は10日目 3月31日は11日目 4月1日は12日目 4月2日は13日目 4月3日は14日目 4月4日は1日目 4月5日は2日目 4月6日は2日目 4月7日は3日目 4月8日は2日目 4月9日は3日目 4月10日は3日目 4月11日は4日目 4月12日は3日目 4月13日は4日目 4月14日は4日目 4月15日は5日目 4月16日は4日目 4月17日は5日目 4月18日は5日目 4月19日は6日目 4月20日は5日目 4月21日は6日目 4月22日は6日目 4月23日は7日目 4月24日は6日目 4月25日は7日目 4月26日は7日目 4月27日は8日目 4月28日は7日目 4月29日は8日目 4月30日は8日目 5月1日は9日目 5月2日は10日目 5月3日は11日目 5月4日は12日目 5月5日は1日目 5月6日は2日目 5月7日は3日目 5月8日は4日目 5月9日は5日目 5月10日は2日目 5月11日は3日目 5月12日は4日目 5月13日は5日目 5月14日は6日目 5月15日は3日目 5月16日は4日目 5月17日は5日目 5月18日は6日目 5月19日は7日目 5月20日は4日目 5月21日は5日目 5月22日は6日目 5月23日は7日目 5月24日は8日目 5月25日は5日目 5月26日は6日目 5月27日は7日目 5月28日は8日目 5月29日は9日目 5月30日は6日目 5月31日は7日目 6月1日は8日目 6月2日は9日目 6月3日は10日目 6月4日は11日目 6月5日は12日目 6月6日は1日目 6月7日は2日目 6月8日は2日目 6月9日は2日目 6月10日は3日目 6月11日は4日目 6月12日は2日目 6月13日は3日目 6月14日は3日目 6月15日は3日目 6月16日は4日目 6月17日は5日目 6月18日は3日目 6月19日は4日目 6月20日は4日目 6月21日は4日目 6月22日は5日目 6月23日は6日目 6月24日は4日目 6月25日は5日目 6月26日は5日目 6月27日は5日目 6月28日は6日目 6月29日は7日目 6月30日は5日目 7月1日は6日目 7月2日は7日目 7月3日は8日目 7月4日は9日目 7月5日は10日目 7月6日は11日目 7月7日は1日目 7月8日は2日目 7月9日は3日目 7月10日は4日目 7月11日は5日目 7月12日は6日目 7月13日は7日目 7月14日は2日目 7月15日は3日目 7月16日は4日目 7月17日は5日目 7月18日は6日目 7月19日は7日目 7月20日は8日目 7月21日は3日目 7月22日は4日目 7月23日は5日目 7月24日は6日目 7月25日は7日目 7月26日は8日目 7月27日は9日目 7月28日は4日目 7月29日は5日目 7月30日は6日目 7月31日は7日目 8月1日は8日目 8月2日は9日目 8月3日は10日目 8月4日は11日目 8月5日は12日目 8月6日は13日目 8月7日は14日目 8月8日は1日目 8月9日は2日目 8月10日は2日目 8月11日は3日目 8月12日は2日目 8月13日は3日目 8月14日は3日目 8月15日は4日目 8月16日は2日目 8月17日は3日目 8月18日は3日目 8月19日は4日目 8月20日は3日目 8月21日は4日目 8月22日は4日目 8月23日は5日目 8月24日は3日目 8月25日は4日目 8月26日は4日目 8月27日は5日目 8月28日は4日目 8月29日は5日目 8月30日は5日目 8月31日は6日目 9月1日は7日目 9月2日は8日目 9月3日は9日目 9月4日は10日目 9月5日は11日目 9月6日は12日目 9月7日は13日目 9月8日は14日目 9月9日は1日目 9月10日は2日目 9月11日は3日目 9月12日は2日目 9月13日は3日目 9月14日は4日目 9月15日は3日目 9月16日は4日目 9月17日は5日目 9月18日は2日目 9月19日は3日目 9月20日は4日目 9月21日は3日目 9月22日は4日目 9月23日は5日目 9月24日は4日目 9月25日は5日目 9月26日は6日目 9月27日は3日目 9月28日は4日目 9月29日は5日目 9月30日は4日目 10月1日は5日目 10月2日は6日目 10月3日は7日目 10月4日は8日目 10月5日は9日目 10月6日は10日目 10月7日は11日目 10月8日は12日目 10月9日は13日目 10月10日は1日目 10月11日は2日目 10月12日は2日目 10月13日は3日目 10月14日は3日目 10月15日は2日目 10月16日は3日目 10月17日は4日目 10月18日は5日目 10月19日は6日目 10月20日は2日目 10月21日は3日目 10月22日は3日目 10月23日は4日目 10月24日は4日目 10月25日は3日目 10月26日は4日目 10月27日は5日目 10月28日は6日目 10月29日は7日目 10月30日は3日目 10月31日は4日目 11月1日は5日目 11月2日は6日目 11月3日は7日目 11月4日は8日目 11月5日は9日目 11月6日は10日目 11月7日は11日目 11月8日は12日目 11月9日は13日目 11月10日は14日目 11月11日は1日目 11月12日は2日目 11月13日は3日目 11月14日は4日目 11月15日は5日目 11月16日は6日目 11月17日は7日目 11月18日は8日目 11月19日は9日目 11月20日は10日目 11月21日は11日目 11月22日は2日目 11月23日は3日目 11月24日は4日目 11月25日は5日目 11月26日は6日目 11月27日は7日目 11月28日は8日目 11月29日は9日目 11月30日は10日目 12月1日は11日目 12月2日は8日目 12月3日は9日目 12月4日は9日目 12月5日は10日目 12月6日は10日目 12月7日は11日目 12月8日は11日目 12月9日は12日目 12月10日は12日目 12月11日は13日目 12月12日は1日目 12月13日は2日目 12月14日は2日目 12月15日は2日目 12月16日は2日目 12月17日は3日目 12月18日は2日目 12月19日は3日目 12月20日は3日目 12月21日は3日目 12月22日は4日目 12月23日は5日目 12月24日は2日目 12月25日は3日目 12月26日は3日目 12月27日は3日目 12月28日は3日目 12月29日は4日目 12月30日は3日目 12月31日は4日目
面白いですね。ちなみに2/29は2/28から遷移するので15日目のはずです。
感想
こういうクソくだらないことを考えるのが結構楽しい。