#コンパイラ 原理 技法 ツール
######著者
- Alfred V. Aho
- Jeffrey D. Ullman
コンパイラ 原理 技法 ツール、通称ドラゴン本の訳書です。 出版社が培風館で情報処理シリーズのうちの一巻なので表紙がドラゴンじゃない
#コンパイラ 原理 技法 ツール
######著者
コンパイラ 原理 技法 ツール、通称ドラゴン本の訳書です。 出版社が培風館で情報処理シリーズのうちの一巻なので表紙がドラゴンじゃない
| int digit(long long X, int n){ | |
| long long e = X; | |
| rep(i, n) e /= 10; | |
| e %= 10; | |
| return e; | |
| } |
| // 1になってる最下位ビット以下を返す 10010なら10 | |
| // 10010 & 01111 から 00010 | |
| int lowbit(int x){ | |
| return x&-x; | |
| } |
| // modをとる。nが負数の時に期待する値が返されないのでmを足してからmodをとっている | |
| int mod(int n, int m){ | |
| return (n + m) % m; | |
| } |
| #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; |
| 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; | |
| } |
| #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); |
m/nを切り上げる
(m + n - 1) / n
m/nを切り下げる
m / n
m/nを四捨五入する
| $ cd | |
| $ tar zxvf ~/Downloads/gnat-gpl-2014-x86_64-darwin-bin.tar.gz | |
| $ cd gnat-gpl-2014-x86_64-darwin-bin | |
| $ sudo ./doinstall |