セキュリティキャンプ&再帰楽しい

落ちた。今思えば動機が甘かった気がするなぁ・・・。悔しい。

来年ガンバルゾーー!!!

あとなんか実装楽そうな汎用性のあるものを作ったので自分用にメモ。

/* 二分累乗法 - 高速 無駄にビット演算 */
int b_pow(int x,int n){return n ? n==1 ? x: b_pow(x,n>>1)*b_pow(x,(n>>1)+(n&1)) : 1;}

/* 桁数を返す。必ずdegit(n)の形で使うこと。『0』は1桁として扱うようにした。*/
int degit(int n,int s=0){return n ? degit(n/10,s+1) : s ? s : 1;}

/*セットで宣言よろしく。呼び出す時はisprime()の方を使いましょう。素数でないなら0を返し、素数なら1を返します。要math.h */
int dummy_prime(int n,int i){return i>1 ? n%i ? dummy_prime(n,i-1) : 0 : 1;}
int isprime(int n){return n>1 ? dummy_prime(n,sqrt(n)) : 0;}

primeらへんはテキトウにつくったのでめちゃくちゃ。