Skip to content

Instantly share code, notes, and snippets.

View raven38's full-sized avatar

raven raven38

View GitHub Profile
@raven38
raven38 / 0.0.markdown
Last active July 6, 2023 09:32
『コンパイラ 原理・技法・ツール』読書メモ

#コンパイラ 原理 技法 ツール


######著者

  • Alfred V. Aho
  • Jeffrey D. Ullman

コンパイラ 原理 技法 ツール、通称ドラゴン本の訳書です。 出版社が培風館で情報処理シリーズのうちの一巻なので表紙がドラゴンじゃない

@raven38
raven38 / digit
Created September 25, 2014 14:48
Xの下からn行目を抽出する
int digit(long long X, int n){
long long e = X;
rep(i, n) e /= 10;
e %= 10;
return e;
}
@raven38
raven38 / lowbit.cpp
Created October 6, 2014 14:26
最下位ビットを見つけるだけ
// 1になってる最下位ビット以下を返す 10010なら10
// 10010 & 01111 から 00010
int lowbit(int x){
return x&-x;
}
@raven38
raven38 / mod.cpp
Created October 6, 2014 14:28
MODをとる計算
// modをとる。nが負数の時に期待する値が返されないのでmを足してからmodをとっている
int mod(int n, int m){
return (n + m) % m;
}
@raven38
raven38 / combination.cpp
Created October 15, 2014 11:11
組み合わせの総数を求める。 combination
#define MOD 100000007
long long comb(int P_, int Q_){
static const int N_ = 1020;
static long long C_[N_][N_];
if(C_[0][0]==0){
int i,j;
for(i = 0; i < N_; ++i) C_[i][0] = C_[i][i] = 1;
for(i = 0; i < N_; ++i) for(j = 1; j < i; ++j) C_[i][j] = (C_[i-1][j-1] + C_[i-1][j])%MOD;
@raven38
raven38 / combination.cpp
Created October 15, 2014 12:31
小さい方のcombination
long long combination(int n, int r){
long long i = 1;
int k = r>n-r?n-r:r, cnt;
if(k < 0) return 0;
for(cnt = 1; cnt <= k; cnt++){
i *= n - cnt + 1;
i /= cnt
}
return i;
}
@raven38
raven38 / concatvec.cpp
Created November 10, 2014 16:28
vector<string>の要素を全て繋げてstringにする
#include <numeric>
using namespace std;
// T accumulate( InputIt first, InputIt last, T init );
string concatvec(vector<string> expr){ return accumulate(expr.begin(), expr.end(), string(""));}
int main(){
vector<string>vs; // 適当な文字列を入れてく
string s = concatvec(vs);
@raven38
raven38 / ceil_floor_round.md
Last active August 29, 2015 14:11
天井関数、割り算の切り上げ

m/nを切り上げる

(m + n - 1) / n

m/nを切り下げる

m / n

m/nを四捨五入する

@raven38
raven38 / file0.txt
Created February 14, 2015 09:15
OS XでGNATをインストールする方法 ref: http://qiita.com/raven38/items/c71a500a9b2ca9c93dd0
$ cd
$ tar zxvf ~/Downloads/gnat-gpl-2014-x86_64-darwin-bin.tar.gz
$ cd gnat-gpl-2014-x86_64-darwin-bin
$ sudo ./doinstall