これを一定の時間で行うにはどうすればよいですか (a から b への反復をブルートしたくありません)。
// return number of multiples of c in [a,b]
long count_multiples(int a, int b, int c) {
assert(b >= a && c != 0);
// todo
return -1;
}
この質問は一見単純に見えますが、a
すべてのケースを処理する必要があるなど、いくつかのコーナー ケースがあるため、見た目よりも難しいです( 結果は 1 つのケースで 32 ビットに収まらない場合があります ( 、、)b
c
a
b
c
a = 2^31
b = 2^31-1
c = 1 or -1