整数の最大公約数と最小公倍数の効率的計算手法

整数の最大公約数(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 投稿