メモの日々


2019年06月22日(土) [長年日記]

[c++][math] 最大公約数を求めるコード

最大公約数を求めるC++のコードをメモ。

最大公約数はユークリッドの互除法で計算できる。これは、自然数a1とa2に対して

  • a1をa2で割った余りをa3とする。a3が0ならa2が最大公約数。
  • a2をa3で割った余りをa4とする。a4が0ならa3が最大公約数。
  • ...

という風にしていって求める方法。a1 < a2 であっても問題なく適用できる。また、負の数に対しても絶対値を取れば適用できる。

で色々説明されていて参考になる。

#include <cassert>
#include <iostream>

// Greatest Common Divisor
// a < b でも問題ないことに注意。
template<typename T>
T gcd(T a, T b)
{
  if (a < 0) a = -a;
  if (b < 0) b = -b;
  while (b) {
    const auto r = a % b;
    a = b;
    b = r;
  }
  return a;
}

int main()
{
  assert(gcd(1071, 1029) == 21);
  assert(gcd(1029, 1071) == 21);
  assert(gcd(-1029, -1071) == 21);
  assert(gcd(0, 1071) == 1071);
  assert(gcd(0, 0) == 0);
  assert(gcd(10, 5) == 5);
  assert(gcd(5, 10) == 5);
}

[math] 最小公倍数の求め方

aとbの最小公倍数LCMは、最大公約数GCDを用いて

\large LCM = \frac{\Large a \cdot b}{\large GCD}

で求まるということをメモ。


2019年06月21日(金) [長年日記]

[howto][unix] CentOS 7でホスト名を変更する

CentOS 7でホスト名を変更するにはhostnamectlコマンドを使用する。

# hostnamectl set-hostname HOSTNAME

2019年06月10日(月) [長年日記]

[dev][unix][service] Linuxのパッケージの情報を得る

というサイトで様々なUNIX系OSのパッケージの情報を得られることを知った。パッケージに含まれるファイル一覧や依存パッケージの情報などを調べられて便利。

DebianやUbuntuは公式サイトでパッケージの情報を得られるけど、CentOSにはそのようなサイトが見当たらなかったので助かる。


2019年06月09日(日) [長年日記]

[hard] ラムダッシュ ES-CLV9B を買った

少し前にラムダッシュの洗浄機を買い直したのだけれど、今度は本体の方が急に壊れてしまった。症状は、

  • スイッチをオンにしても弱々しく振動するだけ。ACアダプタを接続しても変わらず。
  • スイッチをオフにしようとしてもオフにならない。

どうにもならず、そのまま放置するしかなかった。数時間で電池が切れて動かなくなった。

仕方がないので急遽本体を購入。洗浄機付きでなるべく安いのを探すと、ES-LV9Bがビックカメラで21000円くらいで売っていたのでそれを買った。同等の最新機種は ES-LV9D なので二世代前のものを安く買ったかたち。

色が黒銀金で見た目のおじさん向け感がすごい。使ってみて、以前のものよりヘッドがぐねぐねよく動くなと感じた。それが剃り味に貢献しているかはよくわからない。

壊れた機種用に買っていた替刃が無駄になってしまったのが悔しいなあ。


2019年06月07日(金) [長年日記]

[life] toto当せんした(4)

3年ぶりに当せん。100円BIG1097回の5等で当せん金額は890円。厳しい。

totoは予想していると買い忘れが多くなるので、最近は100円BIGを毎週500~1000円自動購入している。楽になったが大赤字。