ふくほのひとりごと。

高専生が勉強したことの自分用メモ。

電気回路 / テブナンの定理を導く

ふくほです。
電気回路何もわからんので, 記事にまとめるところから始めようとおもいます。


テブナンの定理は 重ね合わせの理を用いることで導き出せます。
線型回路網を見ていくための重要な基礎となるので, 今回は導いてみようと思います。
最後には少しだけ, テブナンの定理と双対の関係にあるノートンの定理にも触れようと思います。

1 テブナンの定理

「鳳-テブナンの定理」とも呼ばれます。これはテブナンさんが直流で, 鳳太郎さんが交流で成立することを示したことに由来するそうです。

1.1 定理の概要

f:id:fukuro_hoho:20210205134759p:plain

図のように起電力とインピーダンスを含む回路網中の1つの端子abに着目します。ab間の開放電圧をE, abから見た回路網のインピーダンスZ_0とすれば, 端子対abに任意のインピーダンスZを接続したときにZに流れる電流Iは, 次のようになります。

I=\dfrac{E}{Z_0+Z}

Z_0は, 回路網中のすべての起電力を短絡除去して計算します。

1.2 定理の証明

f:id:fukuro_hoho:20210205141807p:plain
上の図のように, Zと直列にab間の開放電圧に等しい2つの電圧源を考えます。(図における矢印は上向きが正, 下向きが負)これらは打ち消し合うので, 全体で見ればなくても同じです。次に, 回路網中の電源 E_1,E_2, ..., E_n,Eが同時に働いた場合と-Eのみが働いた場合で重ね合わせることを考えます。
前者の場合, ab間は均衡を保っているためこの時電流は流れません。後者の場合, 流れる電流はI=\dfrac{E}{Z_0+Z}となります。重ね合わせの理から, この結果が全体に流れる電流に等しいことがわかります。

2 ノートンの定理

ノートンの定理はテブナンの定理の双対だといえます。電流と電圧、インピーダンスアドミタンス、解放と短絡を入れ替えることでできあがってしまいます。
起電力とインピーダンスを含む回路網中の1つの端子abに着目します。ab間の短絡電流をI, abから見た回路網のアドミタンスY_0とすれば, 端子対abに任意のアドミタンスYを接続したときにYで生じる電圧降下Vは, 次のようになります。

V=\dfrac{I}{Y_0+Y}

3 最後に

これらの定理は二端子回路網を学んでいくうえでかなり重要みたいです。いきなり回路中の抵抗を1つ変えたりしても, 1つの式に,代入する値を変えるだけで電圧降下と電流が求まる優れものです。
なんとなく理解していてもすぐに忘れてしまうので, こうやって導出していくのはだいぶ有効なのではないかと思います。苦労しないとずっと頭に残らないし。
いきなり定理だけ言われてもなかなか実用に至らないので今回は重ね合わせを使って導いてみましたが, 意外と単純でびっくりですね。2つに分けただけ。今回は例題には至らなかったわけですが, しっかり使えるようになって今後さらに回路基礎を学んでいく土台にしていきたいとおもいます。
電気回路の記事も, ちゃんと書いて理解していくぞ~!(素振り)

4 参考書籍

お世話になった本には感謝の気持ちを忘れないように, ここに記しておきます。
・電気回路論(電気学会大学講座), 2008/5/1, 3版第1刷
・電気回路(1)直流・交流回路編, 1991/01/30 初版第7刷
2冊目は表紙の裏のページに数研出版チャート式の要領で色々書いてあって個人的に好きです。

フーリエ解析 / フーリエ級数の係数を求める

ふくほです。
フーリエ解析の基礎を始めました。
今回は係数の求め方についてまとめます。

1. 求める形

 f(x) を周期 T の周期関数とします。
この関数をフーリエ級数で、すなわち
 
f(x) = a_{0} + \sum_{n=1}^{\infty}(a_{n}\cos\frac{2 \pi n x}{T}+ b_{n}\sin\frac{2 \pi n x}{T}) 
\tag{1}
と表せないかを考えます。
また、以下積分級数
入れ替えてもいいものとします。
(複雑な事情があるらしいですが
詳しいことは分かりません…。)

この式の定数(フーリエ係数と呼ばれます)
 a_{0}, a_{n},b_{n} を求めていきます。

ここで、異なる任意の自然数 n,m において
以下の式が成り立ちます。
(積和の公式を用いると証明できます)
この式は導出で重要になります。
  
\begin{eqnarray}
\int_{0}^{T}\sin{mx}\sin{nx} dx = 0 \\
\int_{0}^{T}\cos{mx}\cos{nx} dx = 0 \\
\int_{0}^{T}\sin{mx}\sin{nx} dx = 0 \\
\int_{0}^{T}(\cos{mx})^2 dx = \frac{T}{2} \\
\int_{0}^{T}(\sin{mx})^2 dx = \frac{T}{2} \\
\end{eqnarray}
\tag{*}

2.フーリエ係数を求める

2.1. a_0を求める

見出しでTeX表記出来ないらしいですね〜…。
(1)式の両辺を1周期で積分します。
 
\int_{0}^{T}f(x) dx =  \int_{0}^{T}a_{0}dx + \int_{0}^{T}\sum_{n=1}^{\infty} (a_{n}\cos\frac{2 \pi n x}{T}+ b_{n}\sin\frac{2 \pi n x}{T}) 
\tag{2}
左辺第2項、第3項は0となるため
この式を整理すると
  
\begin{eqnarray}
\int_{0}^{T}f(x) dx =  \int_{0}^{T}a_{0}dx \\
\int_{0}^{T}f(x) dx = a_{0}T\\
a_{0} = \frac{1}{T} \int_{0}^{T}f(x) dx
\tag{3}
\end{eqnarray}
が得られます。

2.2. a_nを求める

(1)の両辺に、\cos{mx}  をかけます。
すると以下の式が出来ますね。

 
f(x) \cos{mx} = a_{0} \cos{mx} + \sum_{n=1}^{\infty}(a_{n}\cos\frac{2 \pi n x}{T} \cos{mx} + b_{n}\sin\frac{2 \pi n x}{T} \cos{mx})
\tag{4}

そして、(4)を1周期で積分します。
(*)で示した式を用いると、
 \frac{2 \pi n x}{T} = m となる n 以外の
全ての n において、積分値は0となります。
よって積分した式を整理すると
 
\begin{eqnarray}
\int_{0}^{T}f(x)\cos{mx}dx = a_{m}\frac{T}{2}\\
a_{m} = \frac{2}{T} \int_{0}^{T}f(x) \cos{mx}  dx\tag{5}
\end{eqnarray}
が得られます。
m  は任意の自然数です。



2.3. b_nを求める

(1)の両辺に、\sin{mx}  をかけます。
すると以下の式が出来ますね。

 
f(x) \sin{mx} = a_{0} \sin{mx} + \sum_{n=1}^{\infty}(a_{n}\cos\frac{2 \pi n x}{T} \sin{mx} + b_{n}\sin\frac{2 \pi n x}{T} \sin{mx})
\tag{6}

そして、(6)を1周期で積分します。
(*)で示した式を用いると、
 \frac{2 \pi n x}{T} = m となる n 以外の
全ての n において、積分値は0となります。
よって積分した式を整理すると
 
\begin{eqnarray}
\int_{0}^{T}f(x)\sin{mx}dx = b_{m}\frac{T}{2}\\
b_{m} = \frac{2}{T} \int_{0}^{T}f(x) \sin{mx}  dx
\tag{7}
\end{eqnarray}
が得られます。
m  は任意の自然数です。

3. フーリエ余弦級数とフーリ正弦級数

フーリエ級数にする関数が偶関数の場合、
 b_{n}\sin\frac{2 \pi n x}{T} の成分は
  \sin{x}が奇関数であるから
0になります。

奇関数の場合は逆に、
 a_{n}\cos\frac{2 \pi n x}{T} の成分は
  \cos{x}が奇関数であるから
0になります。

偶関数×奇関数は奇関数、
偶関数×偶関数は偶関数です。

従って、 f(x) が偶関数の場合は
 
\begin{eqnarray}
f(x) = a_{0} + \sum_{n=1}^{\infty}a_{n}\cos\frac{2 \pi n x}{T}
\end{eqnarray}
\tag{8}
奇関数の場合は
 
\begin{eqnarray}
f(x) = a_{0} + \sum_{n=1}^{\infty}frac{2 \pi n x}{T}
\end{eqnarray}
\tag{9}
と表すことができます。
それぞれフーリエ余弦級数
フーリエ正弦級数と呼びます。

4. 終わりに

私はここの理解に結構苦しみました。
任意の周期関数が、全く重ならないにしても
三角関数で近似できるのは
すごいなぁと思いました…。

今回の級数にする動作が、
今後のフーリエ変換や複素フーリエ級数
役立っていくので、復習を怠らずに
いたいと思います。

ベクトル解析 / ベクトル場での 線積分・面積分

ふくほです。
積分・面積分の記事2つ目です。
スカラー場ver.に引き続き
ベクトル場ver.も書きます!

1. そもそも何をしているか

積分は、ある点が、力を受けながら
曲線に沿って移動するときの
仕事を求めています。
この受けている力がベクトル場\vec{a}です。
移動の大きさを\Delta rとすると、
この\Delta rに対して\vec{a}がなす仕事は
\Delta r \cdot \vec{a}と表されます。
小さな移動を合計して
曲線に沿う仕事を求める、
これがベクトル場での線積分です。


積分は、流体の中に向きが定められた
曲面がある時この曲面を通る
単位時間当たりの流出量を求めています。
面積ベクトルを\Delta S,
流体のベクトルを\vec{a}とすると、
流出量は  \vec{a} \cdot \Delta Sとなります。
この微小面積を合計して
曲面での流出量を求める、
これがベクトル場での面積分です。
面積ベクトルの詳しい説明は次のサイト
でつかめると思います。
hooktail.sub.jp

2. ベクトル場での線積分の計算

曲線 C: [x(t),y(t),z(t)](a \leq t \leq b)
ベクトル場 \vec{a} = \vec{a}(x,y,z)としたとき
Cに沿う\vec{a}の線積分I

\begin{eqnarray}
I = \lim_{n \to \infty} \sum_{k=0}^{n} \vec{a}(t_{k})\cdot \Delta \vec{r_k}
\end{eqnarray}
ここから次のように表すことができます。

\begin{eqnarray}
I &=& \int_{C} \vec{a}\cdot d\vec{r} \\
&=& \int_{a}^{b} \vec{a}\cdot \frac{d\vec{r}}{dt}dt
\end{eqnarray}
  \frac{d\vec{r}}{dt}Cの接線ベクトルです。
被積分関数内積なのでスカラになります。

ではここで例題をひとつ。
[例題]
(5,-2,1)から点(-3,1,4)に向かう
線分をCとする。
この時ベクトル場\vec{a} = [2x-3y,-3x,4z]
Cに沿う線積分を求めよ。

Cは媒介変数t(0 \leq t \leq 1)を用いて
x = 5 -8t
 y=-2+3t
z=1+3t
と表されます。
これを\vec{a}に代入すると

\begin{eqnarray}
\vec{a} &=& [2(5-8t)-3(-2+3t), -3(5-8t), 4(1+3t)]\\
&=& [-25t + 16, 24t-15, 12t+4]
\end{eqnarray}
が得られます。
また、Cの接線ベクトルは
 \frac{d\vec{r}}{dt} = [-8,3,3]
であるため、被積分関数

\begin{eqnarray}
\vec{a}\cdot \frac{d\vec{r}}{dt} 
&=& -8(-25t+16)+3(24t-15)+3(12t+4)\\
&=& 308t -161
\end{eqnarray}
あとは積分するだけです。

\begin{eqnarray}
I &=& \int_{C} \vec{a}\cdot \frac{d\vec{r}}{dt}dt \\
&=& \int_{0}^{1} (308t -161)dt\\
&=& 154-161\\ 
&=& -7
\end{eqnarray}
求まった~!
手順を簡単にまとめると
1. Cをパラメータで表す
2. \vec{a}Cx,y,zを代入
3. Cの接線ベクトルを求める
4. \int_{C}\vec{a}\cdot \frac{d\vec{r}}{dt} dtを求める
といった感じです。

2. ベクトル場での面積分の計算

有向な曲面S: \vec{r}(u,v)の定義域をDとします。
曲面Sにおけるベクトル場\vec{a}
積分Iは次のように表されます。

\begin{eqnarray}
I &=& \int_{S} \vec{a} \cdot d \vec{S} \\
&=& \pm \int \int_{D} \vec{a}(u,v)\cdot (\frac{\partial \vec{r}}{\partial u}\times \frac{\partial \vec{r}}{\partial v})du dv
\end{eqnarray}
ここで、符号は\frac{\partial \vec{r}}{\partial u}\times \frac{\partial \vec{r}}{\partial v}が外向きの時に正、
内向きの時に負となります。

ここで例題を1問。
[例題]
曲面を S: \vec{r} = [v\cos u, v\sin u, 1-v^{2}]
(0\leq u \leq 2\pi, 0\leq v \leq 1)
ベクトル場を\vec{a} = [xz, yz, 1]とする。
Sの法線ベクトルのうち、z成分が正のものが
外向きであるように向きを定めたとき、
\vec{a}Sにおける面積分Iの値を求めよ。

まず面積ベクトルを求めます。
 \frac{\partial \vec{r}}{\partial u} = [-v\sin u, v\cos u, 0]
 \frac{\partial \vec{r}}{\partial v} = [\cos u, \sin u, -2v]
ここから
 \frac{\partial \vec{r}}{\partial u}\times \frac{\partial \vec{r}}{\partial v} = [-2v^{2}\cos u, -2v^{2}\sin u, -v]
が求まります。
z成分が負なので内向きの法線ベクトルになっています。
次に
 x=v\cos u, y=v\sin u, z=1-v^{2}\vec{a}に代入して
 \vec{a} = [v\cos u(1-v^{2}), v\sin u(1-v^{2}),1]
が得られます。
よって、被積分関数を計算することができます。

\begin{eqnarray}
\vec{a}\cdot (\frac{\partial \vec{r}}{\partial u}\times \frac{\partial \vec{r}}{\partial v})
&=& -2v^{3}\cos^{2}u(1-v^{2})-2v^{3}\sin^{2}u(1-v^{2})-v\\
&=&-2v^{3}(1-v^{2})-v\\
&=&-v-2v^{3}+2v^{5}
\end{eqnarray}
最後に積分をしてフィナーレです。
この時、面積ベクトルが内向きであるため
マイナスをつけます。

\begin{eqnarray}
\int \int_{D} \{-\vec{a}(u,v)\cdot (\frac{\partial \vec{r}}{\partial u}\times \frac{\partial \vec{r}}{\partial v})\}du dv
&=& -\int_{0}^{1}\int_{0}^{2\pi} -v-2v^{3}+2v^{5}du dv\\
&=& - 2\pi \int_{0}^{1}-v-2v^{3}+2v^{5} dv \\
&=& -2\pi (-\frac{1}{2}-\frac{1}{2}+\frac{1}{3})\\
&=& -2\pi \cdot (-\frac{2}{3})\\
&=& \frac{4}{3}\pi
\end{eqnarray}

何とか求まりました!
1. 面積ベクトルを求める
2. \vec{a}u,vで表す
3. \int \int_{D} \{\pm\vec{a}(u,v)\cdot (\frac{\partial \vec{r}}{\partial u}\times \frac{\partial \vec{r}}{\partial v})\}du dvを計算する
の手順を踏めばよさそうです。

4.最後に

とても掴みにくかったベクトル場での積分について
何とかまとめられてよかったです。
間違ってるところとか、改善の余地とかがあれば
教えていただけるとありがたいです。
筆者はありったけの数学力を駆使して
この記事を書きました。
本当に数学って難しい。

よかったらスカラー場ver.も読んでみてください!
fukuro-hoho.hatenablog.com

ベクトル解析 /スカラー場での 線積分・面積分

ふくほです。
久しぶりの更新です!
積分、面積分について忘れやすいし
難しいと感じたので書き殴ります。
今回はスカラー場に限定します。

1. そもそも何をしているか

私は下のサイトを見てとても感動しました。
oshiete.goo.ne.jp
スカラー場での線積分
一様の重みで分布している関数の
ある曲線に沿った
重みの和を求めているのです。

積分だと、曲線が曲面に
積分だと、立体に
それぞれなるんですね~。

2. スカラー場での線積分の計算

空間スカラー\varphi(x,y,z)
曲線C : x=x(t), y=y(t), z=z(t) (a\leq t \leq b)
に沿った線積分を考えます。
この時、線積分I
曲線の長さをsとしたとき
次のようになります。
 
\begin{eqnarray}
I &=& \int_{C} \varphi ds\\
&=&  \int_{a}^{b} \varphi(x(t),y(t),z(t))\sqrt{x'(t)^{2}+y'(t)^{2}+z'(t)^{2}}dt
\end{eqnarray}
これは、s = \int_{a}^{b} \sqrt{x'(t)^{2}+y'(t)^{2}+z'(t)^{2}}dt
を用いて置換積分を行っています。


これは、先程述べたイメージから
 
\begin{eqnarray}
I &=& \lim_{n \to \infty} \sum_{k=1}^{n} \varphi (t_{k})\Delta s_{k}
\end{eqnarray}
積分に帰着したものになります。
(イメージなので細かい文字の説明は
なしでざっくりこんな感じ。)

ではここで例題を。

[例題]
曲線 Cを点(-1,0,2)から点 (1,2,3)に向かう線分,
 \varphi = \pi \{\sin(\pi x)+\sin(\pi y)+\sin(\pi z)\}としたとき
Cに沿う\varphiの線積分Iを求めよ。

まず、Cを媒介変数tで表してみます。
 0 \leq t \leq 1としたとき, C
 x = -1 + 2 t
 y = 2 t
 z = 2 + t
と表されますね。
次にパラメータを用いた x,y,z\varphiに代入します。
 \varphi = \pi \{\sin(-1+2t)\pi+\sin2\pi t+\sin(2+t)\pi\}
あとはこれを積分するだけです。
 
\begin{eqnarray}
I &=&\int_{C} \varphi ds \\
&=& \int_{0}^{1}  \pi \{\sin(-1+2t)\pi +\sin2\pi t+\sin(2+t)\pi\} \sqrt{{x'}^{2}+{y'}^{2}+{z'}^{2}}dt \\
&=& \int_{0}^{1}  \pi \{\sin(-1+2t)\pi +\sin2\pi t+\sin(2+t)\pi\}\sqrt{{2}^{2}+{2}^{2}+{1}^{2}}dt \\
&=& \int_{0}^{1}  \pi \{\sin(-1+2t)\pi +\sin2\pi t+\sin(2+t)\pi\}\sqrt{9}dt \\
&=& \int_{0}^{1}  \pi \{\sin(-1+2t)\pi +\sin2\pi t+\sin(2+t)\pi\}\cdot 3 dt \\
&=& 3\pi [-\frac{1}{2\pi} \cos(\pi(-1+2t)) - \frac{1}{2\pi}\cos(2\pi t) - \frac{1}{\pi}\cos(\pi(2+t))]_{t=0}^{t=1} \\
&=& [-\frac{3}{2} \cos(-1+2t)\pi - \frac{3}{2}\cos2\pi t - 3\cos(2+t)\pi]_{t=0}^{t=1}\\
&=& -\frac{3}{2}\{\cos(\pi)-\cos(-\pi)\} -\frac{3}{2}\{ \cos(2\pi)-\cos(0)\}-3 \{\cos(3\pi)-\cos(2\pi)\}\\
&=& 3\cdot 2\\
&=& 6
\end{eqnarray}

やったぜ、解けた!!
計算の手順としては
1. 曲線Cをパラメータtで表す
2. Cx,y,z\varphiに代入する
3. \int_{a}^{b} \varphi(x(t),y(t),z(t))\sqrt{x'(t)^{2}+y'(t)^{2}+z'(t)^{2}}dtを計算する
こんな感じ。

3. スカラー場での面積分の計算

積分は先述の通り,
積分の曲線Cが曲面Sに変わっただけです。
曲面S : \vec{p}(u,v) = [x(u,v),y(u,v),z(u,v)]とします。
(u,vは領域D内を動いている)
この時,空間スカラー\varphi(x,y,z)
Sに沿った面積分Iは次のようになります。


\begin{eqnarray}
I &=& \int \int_{S} \varphi(x,y,z) dS\\
&=& \int \int_{D} \varphi(x(u,v),y(u,v),z(u,v)) dS\\
&=& \int \int_{D} \varphi(x(u,v),y(u,v),z(u,v)) ||\frac{\partial \vec{p}}{\partial u}\times \frac{\partial \vec{p}}{\partial v}  || dudv
\end{eqnarray}

 ||\frac{\partial \vec{p}}{\partial u}\times \frac{\partial \vec{p}}{\partial v}  || は微小面積を表しています。
(dSは面要素とか、面積要素とかって呼ばれています)

ささ、これも例題をひとつ。

[例題]
曲面\vec{r} = [u, 2\cos v , 2 \sin v]( 0 \leq u \leq 2, 0\leq v\leq \frac{\pi}{2})
Sとするとき、
スカラー \varphi = xyzSにおける面積分Iを求めよ。

まず、面要素を求めましょう。
 \frac{\partial \vec{p}}{\partial u} = [1, 0, 0 ]
 \frac{\partial \vec{p}}{\partial v} = [0, -2\sin v, 2\cos v ]から
 \frac{\partial \vec{p}}{\partial u}\times \frac{\partial \vec{p}}{\partial v}  = [0,-2\cos v, -2\sin v]
よって、
 
\begin{eqnarray}
dS &=& ||\frac{\partial \vec{p}}{\partial u}\times \frac{\partial \vec{p}}{\partial v}  || \\
&=& \sqrt{0^{2}+ {(-2\cos v)}^{2}+ {(-2\sin v)}^{2}}\\
&=& \sqrt{4\cos^{2}v + 4 \sin^{2}v}\\
&=& \sqrt{4} = 2
\end{eqnarray}
次いで、Sx,y,z\varphiに代入します。

\begin{eqnarray}
 \varphi &=& xyz \\
&=& u\cdot 2\cos v \cdot 2\sin v \\
&=& 4u\sin v \cos v \\
&=& 2u\sin 2v 
\end{eqnarray}
あとはこれを u,v積分するだけです。

\begin{eqnarray}
I &=& \int_{0}^{\frac{\pi}{2}} \int_{0}^{2} 2u \sin 2v \cdot 2 du dv \\
&=& \int_{0}^{2} 2u du \int_{0}^{\frac{\pi}{2}} 2\sin 2v dv \\
&=& 4 \cdot [-\cos 2v]_{v=0}^{v=\frac{\pi}{2}}\\
&=& 4(-\cos \pi + \cos 0)\\
&=& 8
\end{eqnarray}

解けたーっ!
計算の手順としては
1. 曲面Sの面積要素を求める
2. Sx,y,z\varphiに代入する
3. \int \int_{D} \varphi(x(u,v),y(u,v),z(u,v))||\frac{\partial \vec{p}}{\partial u}\times \frac{\partial \vec{p}}{\partial v}  ||du dvを計算する
こんな感じ。

4. 最後に

記事を書いたことでだいぶ理解が
深まったような気がします。
なるべく早くベクトル場ver.も書くつもりです。
何かおかしいことがあったら教えてください。
だいぶ読み返して確認はしたのですが…
なんかある気がします。
ではまた。

p.s.
ベクトル場ver.も書きました!
fukuro-hoho.hatenablog.com

AtCoder / 乱数作成

ふくほです。
ABC028-D 乱数作成
を解きました。
atcoder.jp

考えたこと

数学の問題。
3つの数字を選んだときk
中央値となる場合は以下が考えられます。
1. 3回ともkが出る
2. 2回kが、1回kより大きい数が出る
3. 2回kが、1回kより小さい数が出る
4. k,kより大きい数,kより小さい数が
1回ずつ出る

ここで、kより大きいn以下の数は
n-k
kより小さい数はk-1個あります。

1の確率は\frac{1}{n^3}
2の確率は\frac{3(n-k)}{n^3}
3の確率は\frac{3(k-1)}{n^3}
4の確率は\frac{3!(n-k)(k-1)}{n^3}

となります。(詳しい解説はしません)
これの総和を取れば答えが出ます。

また、実装の時はn^3で割る時に
(double)を書かないとint型で出てきてしまうので
注意が必要でした
(初心者の時にやらかしてました)

提出コード

atcoder.jp

感想

これは高校だと1年生の数学に
なるんですかね(多分)
まだすっと解けてよかった。

AtCoder / 民族大移動

ふくほです。
ABC024-C 民族大移動
を解きました。
atcoder.jp

考えたこと

愚直に解くとO(KN)
今回の制約ではKNは高々10^6
程度なので、間に合いそうです。

出発地と比べて目的地の
数字が大きい場合は
目的地にたどり着くまで
大きな数字の街に移動させます。
その逆もやります。

目的地にたどり着いた時点で、
その民族に対する計算を辞めます。

提出コード

atcoder.jp

感想

今回は愚直解で間に合ったけど、
もしも間に合わなかったら
どうやって計算量減らすんだろ…

最近コンテストに出てる感想だと
やたらと制約がきついので
今後はこれのNK\geq 10^9とか
出てきそうで怖いなぁと思います。

AtCoder / 高橋君と魔法の箱

ふくほです。
ABC019-C 高橋君と魔法の箱
を解きました。
atcoder.jp

考えたこと

エラトステネスの篩みを感じました。
ちょっと違うんですけどね。
配列の中を小さい順に見ていき
要素の2の累乗倍の要素は
数えないようにするとうまくいきます。

数えたかどうかはbool型の配列で管理。
初めのソートを忘れてバグらせてました。

提出コード

atcoder.jp

感想

エラトステネスの篩を
実装したことがあったので
そんなにきつくなかったです。