problems(cpp): add “1680. Concatenation of Consecutive Binary Numbers”

Signed-off-by: Matej Focko <mfocko@redhat.com>
This commit is contained in:
Matej Focko 2023-12-12 14:46:33 +01:00
parent aa2008b326
commit a48dd4765e
Signed by: mfocko
GPG key ID: 7C47D46246790496

View file

@ -0,0 +1,34 @@
#include <cassert>
class Solution {
static const int MOD = 1000000007;
public:
int concatenatedBinary(int n)
{
long joined_number = 0;
int padding = 1;
for (int i = 1; i <= n; i++) {
joined_number = ((joined_number << padding) + i) % MOD;
if ((i & (i + 1)) == 0) {
padding++;
}
}
return joined_number;
}
};
int main()
{
Solution s;
assert(s.concatenatedBinary(1) == 1);
assert(s.concatenatedBinary(2) == 6);
assert(s.concatenatedBinary(3) == 27);
assert(s.concatenatedBinary(12) == 505379714);
return 0;
}