ARC092/ABC091 D - Two Sequencesを解いていきます。 問題 https://beta.atcoder.jp/contests/arc092/tasks/arc092_b 感想 本番でC問題も解けず、焦ってこの問題見たら絶望しました。 何か規則性はないものかと必死で探して見たものの見つからず、解ける気がしませんでした。今後のために解法を書いておく事にしました。 結果はもちろん0完。。。 解法 aとbを足した全ての値を全て計算すると、計算量はO(n^2)となり最大で400億になってしまうので間に合わない。 そこで二進数の各位ごとに計算する。 10進数 2進数 0 0 1 1 2 10 3 11 4 100 5 101 6 110 7 111 8 1000 9 1001 10 1010 11 1011 12 1100 13 1101 14 1110 15 1111 16 10000 この表を見ると2^kの位は0と1が2^k個づつ交互に並んでいることがわかる。 よって、 ai + bj の 2^kの位 の値は、ai + bj の値が... 0 ≤ ai+bj < 2^k の時 0 2^k ≤ ai+bj < 2*2^k の時 1 2*2^k ≤ ai+bj < 3*2^k の時 0 3*2^k ≤ ai+bj < 4*2^k の時 1 4*2^k ≤ ai+bj < 5*2^k の時 0 5*2^k ≤ ai+bj < 6*2^k の時 1 ...... となる。 これは、mod(2*2^k)としてしまっても構わないので、 ai ≡ n (mod 2*2^k) bj ≡ m (mod 2*2^k) とすると、 0 ≤ n+m < 2^k の時 0 2^k ≤ n+m < 2*2^k の時 1 2*2^k ≤ n+m < 3*2^k の時 0 3*2^k ≤ n+m < 4*2^k の時 1 n+m < 4*2^k より、場合分けはこれだ
webサービスでのページ遷移をスムーズにできるbarba.jsを使って画面遷移をするときに手間取ったのでやり方を書いていきます。 私が作ったページは こちら 「はじめる」ボタンを押せばページ遷移が始まります。 barba.js barba.jsはwebページ間の遷移をネイティブのアプリケーションのように遷移するためのライブラリです。 Github : https://github.com/luruke/barba.js 導入にはnpmやcdnを使います。ここにはcdn用のコードを貼っておきます。 <script src="https://cdnjs.cloudflare.com/ajax/libs/barba.js/1.0.0/barba.min.js" type="text/javascript"></script> 使い方 ページ遷移の際に読み込みたい部分を、 <div id="barba-wrapper"> <div class="barba-container"> </div> </div> で囲みます。その後、 Barba.Pjax.start(); とJavaScriptにかけばbarba.jsは最小限これで動きます。 設定 まずは公式のデモのコードを見てみます。このコードを使うと上のbarba-wrapperで囲んだ範囲がフェードアウトして遷移先のbarba-wrapperで囲まれた部分がフェードインします。 var FadeTransition = Barba.BaseTransition.extend({ start: function() { /** * This function is automatically called as soon the Transition starts * this.newContainerLoading is a Promise for the loading of the new container * (Barba