#コンパイラ 原理 技法 ツール
######著者
- 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 |