アルゴリズム

C言語でKaratsuba開平を利用して整数の平方根と余りを求める

math.hのsqrt(f)を使わずに整数の平方根を求めてみた。(intが4byteであるマシンでのみ動作) sqrtmod0はアルゴリズム上0x40000000以上の値の平方根を計算でようなので、0x40000000以上の値はKaratsuba開平を利用して求めている。↓は乱数で平方根と余りを求め…

Rubyでn桁の円周率を求める

検証用に使っていた物です。 len = ARGV[0].to_i B = 10 ** len B2 = B << 1 pi = (len * 8 + 1).step(3, -2).inject(B) {|a, i| (i >> 1) * (a + B2) / i} - B puts "3.#{pi}" # time ruby pi.rb 100 3.14159265358979323846264338327950288419716939937510…

何も見ないで書いてみた(マージソート)(2007/07/23(月) 23:57:46)

何も見ないでマージソートを書いてみた。 初め int *tmp = new int[num]; で、マージするための領域用意したのに if(j >= num || (i < left && array[i] < array[j]))array[k++] = array[i++]; else array[k++] = array[j++]; と書いていて、tmpのコピーも開…

何も見ないで書いてみた(クイックソート)(2007/07/23(月) 23:55:28)

何も見ないでクイックソートを書いてみた(汗 while(i < num && array[i] < s)i++; while(j >= 0 && array[j] >= s)j--; の、各whileの1つ目の条件抜けてて、結構ハマった。。。。 ソース void quickSort(int *array, int num){ if(num < 2)return; int i = …

赤黒木の削除

大分前の話だが、赤黒木の削除もできたのでそのうちソース公開

赤黒木

挿入はできたが、削除がまだ。。。 参考 http://www.geocities.jp/h2fujimura/mutter/tree/red-black-tree.html http://ja.wikipedia.org/wiki/%E5%88%A9%E7%94%A8%E8%80%85:Yutaochi/translating/%E8%B5%A4%E9%BB%92%E6%9C%A8 http://www.ececs.uc.edu/~fra…

CでHashを扱う便利(?)なのを作ってみた

CだとC++と違ってが使えないので、別のデータを格納するハッシュを利用するには、それ専用のソースを用意する必要がある。 そこで、Ruby等で使われているst_tableを参考に、柔軟なHashを自分なりに一から作ってみた。突っ込み、機能拡張大歓迎。一応一通りメ…

Maximum Winter Contest 2008 H問題(Problem H Hidden Prime Number)

『Maximum Winter Contest 2008』のH問題 http://maximum.vc/PastProblems/Winter-Contest-2008/h/h.htmlエラストテネスの篩で2-16までのテーブルを作って、ユークリッドの互除法(GCD)で求めたものがソスウ化判定するだけ #include <iostream> #include <vector> #include <math.h> usi</math.h></vector></iostream>…

Maximum Winter Contest 2008 E問題(Problem E Exploring A Cave)

『Maximum Winter Contest 2008』のE問題 http://maximum.vc/PastProblems/Winter-Contest-2008/e/e.htmlダイクストラだけど・・・ 『複数の異なる高さのマスが接する境界上の点の高さは、それらのうち最も高いマスの高さとする。』が罠! #include <iostream> using n</iostream>…

Maximum Winter Contest 2008 A問題(Problem A Abbreviation)

『Maximum Winter Contest 2008』のA問題 http://maximum.vc/PastProblems/Winter-Contest-2008/a/a.htmlしっかり仕様を実装すればOK #include <string> #include <iostream> using namespace std; int main(){ int n, i, j; char word[1024][100], c; while(cin >> n, n){ for</iostream></string>…