競プロ Tips

競プロの Tips.

忘れやすいけど調べたらすぐ分かるやつをまとめる.

char 型 <-> int 型 の変換

  • int to char参考

char c = int型の変数 + '0'; のように書く.

int num = 8;
char num_char = num + '0';
cout << num_char << "\n"; // '8'
  • char to int

int c = char型の数字 - '0'; のように書く.

char num_char = '8';
int num = num_char - '0';
cout << num << "\n"; // 8
  • ctoi 関数

範囲チェック付きの ctoi(char to int)関数.範囲外の数字の場合 -1 を返す.

int ctoi(char c) {
if ('0' <= c && c <= '9') {
return c - '0';
}
return -1;
}

上記に示した char 型,int 型に対する '0' の加減は,文字方の内部表現が整数値であることを利用したテクニックである.

余りの繰り上げ

例えば,「N 人を M 人ずつのグループに分けることを考えたときに,その余りも一つのグループとして数えた場合に合計何グループになるか?」などが典型例である.以下の数式で表せる.

  • 数式

$$ \frac{N + M - 1}{M} $$

  • 実装

17 人を 3 人ずつのグループに分けて余りもグループの数に入れたときのグループの総数.

ll N = 17, M = 3;
ll groups = (N + M - 1) / M;
cout << groups << "\n"; // 4
© 2019 nukopy All Rights Reserved.