cp-library

競技プログラミング用 C++ ライブラリ

View the Project on GitHub qandori/cp-library

:heavy_check_mark: test/bitwise_xor_convolution.test.cpp

test/bitwise_xor_convolution.test.cpp · GitHub で見る

検証問題

依存ライブラリ

コード

#define PROBLEM "https://judge.yosupo.jp/problem/bitwise_xor_convolution"
#include "../convolution/bitwise_convolution.hpp"
#include "../components/fast_io_bulk.hpp"
#include "../math/mint.hpp"
#include <array>
#include <cstddef>
#include <cstdint>
#include <utility>
#include <vector>

int main() {
	FastInput input;
	FastOutput output;
	int exponent = 0;
	input.read(exponent);
	int n = 1 << exponent;
	std::vector<mint> a(n), b(n);
	for (auto *values : {&a, &b}) {
		std::size_t offset = 0;
		read_unsigned_blocks(input, n, [&](const std::uint32_t *block, std::size_t count) {
			for (std::size_t i = 0; i < count; ++i) (*values)[offset + i] = mint::raw(block[i]);
			offset += count;
		});
	}
	auto result = xor_convolution(std::move(a), std::move(b));
	write_unsigned_records<1>(output, result.size(), [&](std::size_t i) {
		return std::array<std::uint32_t, 1>{result[i].val()};
	});
}
Back to top page