読者です 読者をやめる 読者になる 読者になる

競プロメモ 2016.01.29 Fri

デバッグ用

cerr << "debug" << endl // デバッグ用 消さなくてAtCoderではAC

vector を全列挙

// > 4 3 1 1 2 10 2 
void Print(const vector<ll> &v) {
    cerr << "> ";
    for (int i = 0; i < v.size(); i++) {
        cerr << v[i] << " ";
    }
    cerr << endl;
}

vector の要素にxがあるか

if (find(v.begin(), v.end(), x) != v.end()){
        cout << "あり" << endl;
}else{
        cout << "なし" << endl;
}

文字列の置換

using namespace std;
string Replace(string s1, string s2, string s3)
{
    string::size_type  Pos(s1.find(s2));
    while (Pos != string::npos) {
        s1.replace(Pos, s2.length(), s3);
        Pos = s1.find(s2, Pos + s3.length());
    }
    return s1;
}

int main() {
    string str = "abcdefg";
    str = Replace(str, "cd", "XX");
    return 0;
}

浮動小数点型の出力

cout では出力桁が小さいのでprintf()で桁数を指定する

    double t = 0.1234567890;
    cout << t << endl;
    printf("%.10f\n",t);
0.123457
0.1234567890

切り上げ 切り下げ

 double d = 1.2345;
    cout << "切り上げ " << ceil(d) << endl;
    cout << "切り下げ " << floor(d) << endl;