2010-04-01から1ヶ月間の記事一覧

Problem 126

Problem 126 - PukiWiki ブロックで作られた立体を覆い尽くすのに必要なブロックの個数を考える.例えば3×2×1の直方体の場合,22個のブロックにより覆い尽くすことができる. さらに,直方体を覆い尽くしてできた立体をもう一度覆い尽くすのに必要なブロック…

Problem 125

Problem 125 - PukiWiki 回文数 595 は連続する平方数の和で表すことができるという面白い性質を持つ: 6^2+7^2+8^2+9^2+10^2+11^2+12^2 1000 未満で連続する平方数の和で表せる回文数はちょうど 11 あり、その合計は 4164 である。正の整数の平方のみをこの…

Problem 124

Problem 124 - PukiWiki nの素因数の積をrad(n)とする.例えばrad(504) = 2*3*7 = 42である. ある範囲について求めたrad(n)を,rad(n)を第1キー,nを第2キーとしてソートする.このときソート結果のk番目にあるnの値をE(k)とする.例えば1≦n≦10についてrad(…

Problem 123

Problem 123 - PukiWiki Problem 120と同種の問題.n番目の素数をp_nとし,(p_n - 1)^n + (p_n + 1)^nをp_n^2で割った余りが10^10より大きくなる最初のnを求める. 27ms.素数の探索範囲は適当.

Problem 122

Problem 122 - PukiWiki さっぱり解ける気がしないので色々調べている過程でKnuthのpower tree methodというものの存在を知った.それでどうにか理解したものの残念なことにこの問題を単純なpower treeで解くことはできない. 結局Evaluation of Powers | CO…

Knuth's Power Tree Method

指数の計算 a^nを素朴に計算するとn-1回の乗算が必要になる.例えばa^5なら a^2 = a * a a^3 = a^2 * a a^4 = a^3 * a a^5 = a^4 * a しかし,少し工夫することによって乗算の回数は節約できる.例えばa^15は5回の乗算で計算できる. a^2 = a * a a^4 = a^2 …

Problem 121

http://odz.sakura.ne.jp/projecteuler/index.php?Problem%20121 袋の中に最初赤と青の円盤が1枚ずつ入っている.プレイヤーは1ターンに1枚ランダムに円盤を取り出し,色を記録して元に戻す.ターンが終了すると赤色の円盤が追加される. ゲーム終了時に赤い…

Problem 120

Problem 120 - PukiWiki (a-1)^n + (a+1)^n == r (mod a^2)とする.あるaについてnを変えることでrも変化するが,このときrの最大値をr_maxとする(例えばa=7に対しn=3の時r=42でありこれが最大値なのでr_max=42).3≦a≦1000に対しΣr_maxを求めよ. 最初brute …

S3クラスによるメソッド定義?

R

なんか前の(S3クラスによるメソッド定義 - もうカツ丼でいいよな)はどうも違う. そもそも汎用関数がクラスを判別して適切なメソッドへオブジェクトを引き渡すためには関数UseMethodを使う.この時別に汎用関数で指定された引数がオブジェクトのメソッドで使…

Problem 119

Problem 119 - PukiWiki 512は各桁の和(8)を3乗した値に等しい(8^3 = 512). 各桁の和を何乗かするとその値になる性質を持つ数としては,他に614656 = 28^4などがある. この性質を持つ値を小さいものから並べた数列の第n項をa_nとする.またa_nは2桁以上の…

Problem 118

Problem 118 - PukiWiki 1 から 9 の全ての数字を使い、自由につなげることで 10 進数の数字を作り、複数の集合を作ることができる。集合 {2,5,47,89,631} は面白いことに全ての要素が素数である。 1 から 9 の数字をちょうど 1 個ずつ含み、素数の要素しか…

Problem 117

Problem 117 - PukiWiki Problem 116と同じような問題.今度は違う長さのタイルを混ぜて使った場合の合計パターンを求める.ユニットの長さは同じく50.また,タイルを入れないパターンもカウントする. これもProblem 114-116と同じように解けるのでもうほ…

Problem 116

Problem 116 - PukiWiki Problem 114, 115と似た様な問題.長さ50のユニットに長さ2,3,4のタイルを入れるパターンが何通りあるのかを求める.タイルの間は開いている必要はないが,最低1枚のタイルを入れる必要があり,違う長さのタイルを混ぜて使うことは…

Problem 112

Problem 112 - PukiWiki 134468のようにどの桁の数字も左の桁の値以上である数字をincreasing numberと呼ぶ.逆に66420のようにどの桁の数字も左の桁の値以下である数字をdecreasing numberと呼ぶ. そして,increasing numberでもdecreasing numberでもない…

Problem 113

Problem 113 - PukiWiki Problem 112に引き続いてbouncy numberに関連した問題. bouncy numberで無い数の割合は調べる範囲を広げるほど減っていって,例えば100万未満だと12951個で,10未満まで範囲を広げても27732個しかない. 探索範囲を1 googol(10)未満…

S3クラスによるメソッド定義

R

さっきの(Problem 113 - もうカツ丼でいいよな)bigzクラスに対するメソッド定義が上手く行かなかった理由が何となく分かった. 多分こういうこと,という程度なので間違ってたら誰かツッコミ下さい. クラスがなんであれsum()が呼び出されたときまず汎用関数…

Problem 114

Problem 114 - PukiWiki 最低3の長さを持つブロックを長さ50のユニット内に入れる方法は何通りあるか,という問題.ブロック同士の間は最低でも長さ1分あける必要があり,使用するブロックの長さは異なっていてもいい. 紙使ってパターンを列挙して考えたら…

Problem 115

Problem 115 - PukiWiki Problem 114を難しくした問題.ユニットの長さをn,ブロックの最低長さをmとしたとき,ブロックの入れ方のパターン数をF(m, n)で表す. 例えばF(3, 29) = 67315といった具合で,F(3, 50)ならProblem 114の答えである. F(50, n)につ…

Problem 111

Problem 111 - PukiWiki あまり綺麗なやり方ではないけど思ったより簡単に答えが出た.720ms. ただgmp使ってる.gmpってPEのためにあるんじゃないかと思うくらいPEの問題解く際には使い勝手が良い.良すぎるので多倍長演算とか素数判定とか素因数分解とかの…

Problem 109

Problem 109 - PukiWiki ダーツの問題.正解者少ない割に簡単な問題だった. 222ms.ベクトルで計算するように工夫したらもっと早くできそう. あと実はProblem 108と110も答えは出てるんだけどやり方がひどすぎるのとさっぱり改善できないのでとりあえず後…

FirefoxでvimperatorのhelpやPDFを開いたとき空白のページになってしまう

MacのFirefoxでPDFを表示させるのにPDF Plugin for Firefox on Mac OS X – Firefox 向けアドオンを使っているんだけど,PDFを開いたとき時々真っ白なページになってしまってキーボードからの操作も一切受付なくなるという現象が起きていた.PDFが完全に見ら…

igraphパッケージの使い方 2.グラフオブジェクトのプロット

プロット igraphパッケージにはグラフオブジェクト(igraphクラス)をプロットするためのplot.igraph()関数が用意されている.勿論,使う場合はplot()関数にグラフオブジェクトを渡すだけでいい. > ## plot.igraph()が用意されている > g <- graph.tree(15) >…

igraphパッケージの使い方 1. グラフオブジェクトの作成と取り扱い

近頃Rのigraphパッケージで遊んでるんだけど割と面白いので使い方を忘れないうちにメモっておく. グラフはプロットした方が理解しやすいんだけどとりあえず今回はグラフオブジェクトの作成と要素へのアクセスとかその辺.プロットは次回. グラフって何ぞと…

ess-R-object-popup.elのインストール

暇になったらインストールしようと思っていたess-R-object-popup.elをインストールしたので手順メモ. auto-complete.elのインストール GitHub - m2ym/auto-completeからダウンロードして適当なディレクトリに展開. EmacsからM-x load-fileし,さきほど展開…