進捗

課題

TODO

自分用メモ

Matplotlib

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
import numpy as np
import matplotlib.pyplot as plt
from scipy.special import sph_harm

m,l = 1,1
theta = np.linspace(0, np.pi, 101)
phi = np.linspace(0, 2 * np.pi, 151)
theta, phi = np.meshgrid(theta, phi)

r = sph_harm(m, l, phi, theta).real
x = np.abs(r) * np.sin(theta) * np.cos(phi)
y = np.abs(r) * np.sin(theta) * np.sin(phi)
z = np.abs(r) * np.cos(theta)

fig = plt.figure(figsize=(8, 8))
ax = fig.gca(projection="3d")
ax.plot_surface(x, y, z, color="aqua", edgecolor="k")
plt.axis("off")
plt.show()

TeX の記録

\begin{align} u_t = \triangle u. \end{align}

競プロ、AtCoder

6. 素因数分解を活用した考察6-3. 素数を分け合う

問題

$N$ 個の $1$ 以上の整数 $a_1,a_2,\dots,a_N$ があります. $a_1,a_2,\dots,a_N$ の値はわかりませんが, $a_1 \times a_2 \times \cdots \times a_N = P$ がわかっています. $a_1,a_2,\dots,a_N$ の最大公約数として考えられるもののうち, 最も大きいものを求めてください.

ポイント

コードの参考

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
def prime_factorize(p):
    # 計算結果を積む変数
    arr = []

    # 各素因数ごとに考えればいい
    # 2 だけ別に処理: 割れるだけ割っておく
    if p % 2 == 0:
        # 「べき」を積む変数を初期化
        cnt = 0
        while p % 2 == 0:
            cnt += 1
            p //= 2 # どんどん割っていく
        # 2 のべきをリストで積む
        arr.append([2, cnt])

    # 奇素数に対する処理
    q = 3
    # 素数のループの定型処理: p の平方根まで計算すればいい
    # ループ中で p 自体をどんどん小さくしていくのではじめに sqrt_p を計算してはいけない
    while q * q <= p:
        if p % q == 0:
            cnt = 0
            while p % q == 0:
                p //= q # q でどんどん割って小さくする
                cnt += 1 # 割れたらカウントアップ
            arr.append([q, cnt])
            q += 2 # 偶数は既に処理しているので偶数は飛ばしていい
        else:
            q += 2 # 偶数は既に処理しているので偶数は飛ばしていい
            continue

    # p が素数の場合の処理
    if p != 1:
        arr.append([p, 1])

    return arr

def solve(n, p):
    # n, p = map(int, input().split())
    # 計算結果を積む変数
    ans = 1

    # p = 1 は別処理
    if p == 1:
        return 1

    pr_list = prime_factorize(p)

    # a^b が p の素因数分解に含まれる
    for a, b in pr_list:
        # b は p の素因数分解のべきで, n 等分できないなら無視する
        if b >= n:
            # 最大公約数を考えるので a^b を適切な形で積む
            ans *= a ** (b // n)

    return ans

print(solve(3, 24))           # 2
print(solve(5, 1))            # 1
print(solve(1, 111))          # 111
print(solve(4, 972439611840)) # 206
1
2
3
4
2
1
111
206
1
2
3
4
2
1
111
206
1
206

Project Euler も見てみよう

基礎知識

復習

OSI基本参照モデル

いろいろなプロトコル

本の記述を追いかける

[P.398 メール受信プロトコル、メール関連のプロトコル・規格]{#P398}

P.399 Web 関連

[P.401 DNS(Domain Name System)]{#P401_DNSDomain_Name_System}

[P.402 DNS クライアント(リゾルバ)の名前解決要求]{#P402_DNS}

コンテンツサーバへの問い合わせを繰り返すのは非効率なので,通常,自組織内にキャッシュサーバを置きます。この場合,リゾルバはキャッシュサーバに問い合わせを行い,キャッシュサーバ内に該当情報がキャッシュされていれば直接回答を得ることができます。ない場合は,キャッシュサーバが組織外のコンテンツサーバに問い合わせを行い,その結果をリゾルバに回答します。また,キャッシュサーバは,同様の問い合わせの際に再利用できるよう,問い合わせで得た結果を一定期間キャッシュします。

リゾルバからキャッシュサーバに送られる問い合わせを再帰的な問合せという。"再 帰 的"とは,「再び帰ってくる」という意味で,再帰的な問合せに対しては,最終的な結果を回答する必要がある。

[P.402 インターネット上の電話サービスで用いるプロトコル]{#P402}

[P.403 その他のアプリケーション層プロトコル]{#P403}

[P.404 7.7 伝送技術]{#P404_77}

[P.404 誤り制御]{#P404}

[P.404 パリティチェック]{#P404-2}

[P.404 CRC]{#P404_CRC}

[P.404 ハミング符号]{#P404-3}

[P.406 同期制御]{#P406}

[P.408 7.8 交換方式]{#P408_78}

[P.408 パケット交換方式]{#P408}

[パケット通信のメリット・デメリット]{#i-10}

[メリット]{#i-11}

耐障害性\ -- 通信路を固定しないため,迂回経路が取れる。\ -- パケット交換機にデータが蓄積されているため,復旧まで待てる。

[デメリット]{#i-12}

[P.408 ATM 交換方式]{#P408_ATM}

[P.408 ペイロード(payload)]{#P408_payload}

[P.410 輻輳]{#P410}

P.370 7 ネットワーク]{#P370_7}

[P.370 7.1.1 OSI基本参照モデル]{#P370_711_OSI}

[P.370 プロトコルとサービス]{#P370}

特定ベンダー(メーカー)の独自技術に大きく依存した製品、サービス、システム等を採用した際に、他ベンダーの提供する同種の製品、サービス、システム等への乗り換えが困難になる現象のこと。

出来上がった情報システムの正確な仕様が、システムを開発・構築したベンダーにしか解らなくなる場合がある。結果、システムの保守・拡張・改修等の際、現存システムを開発・構築したベンダーに引き続き発注せざるを得なくなる。

[7.1.2 TCP/IPプロトコルスイート]{#712_TCPIP}

[P.372 TCP/IPの通信]{#P372_TCPIP}

[P.372 MAC(Media Access Control)アドレス]{#P372_MACMedia_Access_Control}

[P372 ポート番号]{#P372}

[P.373 ネットワーク間の通信]{#P373}

[P.374 7.2 ネットワーク接続装置と関連技術]{#P374_72}

[P.374 7.2.1 物理層の接続]{#P374_721}

[P.374 リピータ]{#P374}

[P.374 7.2.2 データリンク層の接続]{#P374_722}

[P374 ブリッジ]{#P374-2}

[P.375 スイッチングハブ]{#P375}

[P.375 ブロードキャストストリーム]{#P375-2}

[P.376 ネットワーク層の接続]{#P376}

[P.376 ルータ]{#P376-2}

[P.376 デフォルトゲートウェイ]{#P376-3}

[P.376 ルーティング]{#P376-4}

[P.377 ルータの冗長構成]{#P377}

[P.377 レイヤ3スイッチ(L3スイッチ)]{#P377_3L3}

[P.378 トランスポート層以上の層の接続]{#P378}

[P.378 ゲートウェイ]{#P378-2}

[P.378 L4スイッチ・L7スイッチ]{#P378_L4L7}

[P.379 7.2.5 VLAN]{#P379_725_VLAN}

[P.380 データ林宗の制御とプロトコル]{#P380}