整数の最大公約数と最小公倍数の効率的計算手法
整数の最大公約数(GCD)と最小公倍数(LCM)は数論の基礎概念であり、暗号アルゴリズムや最適化処理で頻繁に利用される。GCDは共通の約数の最大値、LCMは共通の倍数の最小値を指す。これらの値は a × b = GCD(a,b) × LCM(a,b) の関係で結ばれ、GCDを先に求めることでLCMを効率的に導出できる。
標準ライブラリを活用する方法(C++17以降)
C++17では<numeric>ヘッ ...
7月8日 20:53 投稿
C++ std::variantの内部実装と型処理の詳細
C++17で導入されたstd::variantは、複数の型を安全に扱うためのユニオン型です。本記事では、その内部実装の詳細と動作メカニズムを解説します。特に、型特性を活用したメタプログラミング、メモリ管理の仕組み、および値の操作方法について焦点を当てます。std::negationは型特性の否定値を取得するメタ関数です。以下はその動作を示す例です。#include <type_traits&g ...
6月11日 19:57 投稿
Codeforces Round 1002 (Div. 2)
A - 二つの配列と要素の組み合わせ
問題文
2つの長さnの配列a,bが与えられる。この配列の各要素は少なくとも2回以上出現する。配列aとbを並べ替えて、c_i = a_i + b_iとなる長さnの配列cを作る。このcに3種類以上の異なる要素が存在するか判定せよ。
解法
n ≥ 3のため、aとbのそれぞれに含まれる異なる要素の数を確認する。aが1種類でbが2未満、または逆の場合にのみ「No ...
6月6日 22:31 投稿
C++17 高速非同期ロギングフレームワーク「limlog」の設計と実装
limlog は、マルチスレッド環境でも 1 マイクロ秒台のレイテンシを維持しながら、確実にログをファイルへ書き出す軽量ロギングライブラリです。本稿では内部構造、性能チューニング、および使用方法を詳述します。
設計目標
確実性:すべてのログが欠損なく出力され、スレッド間でログが混在しない。
可読性:1 行 1 ログ、awk 等での解析を容易にする。
利便性:printf ...
5月25日 00:36 投稿