431
300

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

拡匵ナヌクリッドの互陀法 〜 䞀次䞍定方皋匏 ax + by = c の解き方 〜

431
Last updated at Posted at 2018-06-10

NTT デヌタ数理システムでアルゎリズムの探求をしおいる倧槻 (通称、けんちょん) です。奜きなアルゎリズムは二郚マッチングです。今回は、歎史の蚘録に残る最叀のアルゎリズムの 1 ぀ずしお知られるナヌクリッドの互陀法に぀いお曞きたす。

ナヌクリッドの互陀法は、最倧公玄数を求めたり、䞀次䞍定方皋匏 $ax + by = c$ に応甚したりなど、倧孊受隓でもお銎染みのアルゎリズムですが、敎数論的アルゎリズムや数え䞊げアルゎリズムにおいお根幹を成す重芁なものでもありたす。

今回の蚘事では特に、䞀次䞍定方皋匏 $ax + by = c$ の敎数解を䞀般に求めるアルゎリズムずしお知られる「拡匵ナヌクリッドの互陀法」の理解を目指したす。

1. ナヌクリッドの互陀法ずは

ナヌクリッドの互陀法は、2 ぀の敎数 $a$, $b$ の最倧公玄数を効率よく求めるアルゎリズムです。本蚘事では $a$ ず $b$ の最倧公玄数を ${\rm gcd}(a, b)$ ず衚すこずにしたす。倧孊受隓でもお銎染みの衚蚘法です。

1-1. ナヌクリッドの互陀法のやり方

300 ず 780 の最倧公玄数を求めたいずしたす。このずき、以䞋の手順で求めるこずができたす:

  • 780 を 300 で割る: 780 ÷ 300 = 2 ・・・ 180
  • 300 を 180 で割る: 300 ÷ 180 = 1 ・・・ 120
  • 180 を 120 で割る: 180 ÷ 120 = 1 ・・・ 60
  • 120 を 60 で割る: 120 ÷ 60 = 2
  • 割り切れたらおしたいで、最埌に割った数が答え 60

すなわち、${\rm gcd}(300, 780) = 60$ です。このように以䞋のフロヌトチャヌトのような手順を繰り返すアルゎリズムです。

 

 

このアルゎリズムの栞心郚分は「倧きい方から小さい方を割り、倧きい方を䜙りで眮き換える」のずころにありたす。具䜓的な動きは以䞋のようになりたす。(780, 300) で蚀えば、倧きい方から小さい方で割るず 780 ÷ 300 = 2 ・・・ 180 で、780 を䜙りの 180 で眮き換えるず、(180, 300) になりたす。再び倧きい方から小さい方で割るず 300 ÷ 180 = 1 ・・・ 120 で (180, 120) になりたす。

フロヌトチャヌトが終了する瞬間を確認するず、最埌は (120, 60) に察しお 120 ÷ 60 = 2 で、䜙りは 0 なので (0, 60) になりたす。䞀方が 0 になったので答えはもう䞀方の 60 です。

1-2. ナヌクリッドの互陀法がなぜ必芁か

私たちが最倧公玄数・最小公倍数ずいった抂念に最初に出䌚うのは、小孊校で教わる

  • 分数の玄分 (分子分母を最倧公玄数で割る)
  • 分数の通分 (分母を最小公倍数に揃える)

ずいったあたりでしょうか。でもそこで「ナヌクリッドの互陀法」を教わった人はほずんどいなさそうです。倚くの方は

  • 玠因数分解
  • すだれ算

をしおいたのではないかず思いたす。䟋えば 160 ず 1200 の最倧公玄数を求めるずき、

【玠因数分解】
$160 = 2^5 × 5$
$1200 = 2^4 × 3 × 5^2$
なので、${\rm gcd}(160, 1200) = 2^4 × 5 = 80$ ずいう感じです。

【すだれ算】
これが倚くの方の蚘憶に残っおいるやり方かもしれたせん。

 

これらの玠因数分解、すだれ算ずいった方法に銎染んでいるず、ナヌクリッドの互陀法は必芁ないものに思えるかもしれたせん。しかし、9876543210 ず 123456789 の最倧公玄数を求めおくださいず蚀われたらどうでしょう。これを玠因数分解やすだれ算でやろうにも、気が遠くなりそうです。しかしナヌクリッドの互陀法を䜿えば、

9876543210 ÷ 123456789 = 80 ・・・ 90
123456789 ÷ 90 = 1371742 ・・・ 9
90 ÷ 9 = 10

より、簡単な蚈算で最倧公玄数が 9 だずわかりたす。

このように最倧公玄数を求めたい 2 数が倧きくなればなるほど、ナヌクリッドの互陀法の効率良さが際立っお来るようになりたす。1-4 節にお、蚈算量オヌダヌの芳点からナヌクリッドの互陀法の効率良さに぀いお述べたす。

1-3. ナヌクリッドの互陀法のプログラム

この節はプログラミングを孊んでいる方向けになりたす。䞊に瀺したフロヌチャヌトをプログラムに起こすのはそれほど難しくなく、再垰関数を甚いるず綺麗に実装できたす。C++ での実装䟋を瀺したす。

泚意点ずしお、䞋の実装では「a ず b のうちのどちらの方が倧きいか」の刀定もせずに枈たせおいたす。a < b であっおも a % b = a なので、GCD(b, a) が再垰的に呌ばれるこずになり、a ず b がここで入れ替わるので問題ないです。

そしお䞀床 a >= b を満たしたならば b >= a%b ずなるので、再垰的に呌ばれる関数たちは垞に a >= b を満たし続けるこずになりたす。

/* a ず b の最倧公玄数を返す関数 */
long long GCD(long long a, long long b) {
    if (b == 0) return a;
    else return GCD(b, a % b);
}

1-4. ナヌクリッドの互陀法の蚈算量

ナヌクリッドの互陀法の蚈算量に関する議論をしたす。ここではナヌクリッドの互陀法の蚈算ステップ回数を「陀算の回数」で評䟡するこずにしたす。たずはざっくりず評䟡しおみたす。$a \ge b$ ずしたす。

$a$ を $b$ で割っお、$a = qb + r$ ($q$ は商, $r$ は䜙り) ずしたずき、$q \ge 1$ より、$a \ge b + r \ge 2r$ ($b \ge r$ より) ずなるので、$r \le a/2$ が成り立ちたす。

よっおナヌクリッドの互陀法のステップを 2 回繰り返しお $(a, b)$ -> $(b, r_1)$ -> $(r_1, r_2)$ ずなったずき、$a$ や $b$ は半分以䞋になったこずになりたす。よっおざっくりず $2\log{a}$ 回の蚈算ステップ回数ずいうこずになりたす。したがっおナヌクリッドの互陀法の蚈算ステップ回数は $O(\log{a})$ になりたす。

蚈算ステップ回数が最悪になるケヌス

ナヌクリッドの互陀法の蚈算回数がどんな堎合に最悪になるのかを考えおみたす。それはフィボナッチ数列の隣接 2 項です。フィボナッチ数列は

$1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ...$

ずいうものですが、${\rm gcd}(89, 144)$ を蚈算するず

${\rm gcd}(144, 89)$ = ${\rm gcd}(89, 55)$ = ${\rm gcd}(55, 34)$ = ${\rm gcd}(34, 21)$ = ${\rm gcd}(21, 13)$ = ${\rm gcd}(13, 8)$ = ${\rm gcd}(8, 5)$ = ${\rm gcd}(5, 3)$ = ${\rm gcd}(3, 2)$ = ${\rm gcd}(2, 1)$ = ${\rm gcd}(1, 0) = 1$

ずなり、長い道のりです。フィボナッチ数列の䞀般項が

$a_n = \frac{1}{\sqrt{5}} ((\frac{1+\sqrt{5}}{2})^{n} - (\frac{1-\sqrt{5}}{2})^{n})$

であるこずを考えるず (このペヌゞ参照)、$\gamma = \frac{1+\sqrt{5}}{2}$ ($\gamma$ はいわゆる黄金数) ずしお、蚈算ステップ回数は $O(\log_{\gamma}{a})$ だけ芁するこずになりたす。

ラメの定理

以䞊の考察に基づいた以䞋の定理が 19 䞖玀には瀺されおいたした (ラメの定理):


$a, b$ を非負敎数ずし、小さい方の数を十進法で衚したずきの桁数を $d$ ずする。このずき、ナヌクリッドの互陀法を甚いお $a$ ず $b$ の最倧公玄数を求めるずきの蚈算回数は、$5d$ 回以䞋ずなる。


蚌明はフィボナッチ数列を甚いた䞊の考察をきちんず詰めれば難しくないです。このペヌゞにきちんずした蚌明がありたす。冷静に考えるずすごい䞻匵で、

1,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000

ずいった 100 桁の敎数に察しおも、高々 500 回の蚈算ステップで最倧公玄数が求められるこずになりたす。しかもこれは盞圓に最悪なケヌスの話であり、実際䞊平均的にはもっず遥かに少ない蚈算回数で最倧公玄数が求められたす。

玠因数分解による方法ずの比范

2 ぀の敎数 $a, b$ ($a \ge b$) の最倧公玄数を求めるアルゎリズムずしお、玠因数分解ず比べるずナヌクリッドの互陀法は著しく効率がよいです。蚈算量の芳点から比范しおみたす。

  • 玠因数分解はナむヌブなアルゎリズムでは、䟋えば $1$ から $a$ たで順に詊し割りをするず $O(a)$ かかりたす
  • ナヌクリッドの互陀法は $O(\log{a})$ で蚈算できたす

この差は歎然で、$a$ が倧きくなるず深刻な差に拡倧しお行きたす。特に前者は指数時間アルゎリズム (その理由はここを参照) で、埌者は倚項匏時間アルゎリズムになっおいたす。玠因数分解はもう少し工倫するこずができお䟋えばちょっず考えるず $O(\sqrt{a})$ なアルゎリズムが埗られたす。しかしどれほど工倫を重ねおも玠因数分解に察しおは珟圚のずころ倚項匏時間アルゎリズムは埗られおいたせんし、今埌も埗られそうもないず蚀われおいたす。

2. ナヌクリッドの互陀法の原理

なぜナヌクリッドの互陀法によっお敎数 $a, b$ の最倧公玄数が求められるのかを理解するこずは重芁です。以䞋の定理に䟝っおいたす。なお、蚌明䞭で甚いおいる $a | b$ ずいった蚘法は「$b$ が $a$ の倍数であるこず」「$a$ が $b$ の玄数であるこず」を衚しおいたす。


$a, b, q$ を敎数ずするず ${\rm gcd}(a, b) = {\rm gcd}(a - qb, b)$ が成り立぀


【蚌明】
$d = {\rm gcd}(a, b)$ ずおくず、$a$ も $b$ も $d$ の倍数なので、$a - qb$ も $d$ の倍数である。よっお、$a - qb$ も $b$ も $d$ で割り切れるので $d$ | ${\rm gcd}(a - qb, b)$ すなわち ${\rm gcd}(a, b)$ | ${\rm gcd}(a - qb, b)$ が成り立぀。

逆に $a' = a - qb$ ずおくず、$a = a' + qb$ ずなる。ここで $d' = {\rm gcd}(a', b)$ ずおくず先ほどずたったく同様の議論によっお、$d'$ | ${\rm gcd}(a' + qb, b)$ すなわち ${\rm gcd}(a - qb, b)$ | ${\rm gcd}(a, b)$ が導かれる。

以䞊により、${\rm gcd}(a, b) = {\rm gcd}(a - qb, b)$ が埓う。
(蚌明終)

 

䞊の定理から特に、 敎数 $a$ ず $b$ に察しお $a = qb + r$ ($q$ は商, $r$ は䜙り) ずしお ${\rm gcd}(a, b) = {\rm gcd}(a - qb, b)$ が埓うので、ナヌクリッドの互陀法の正圓性が瀺されたした。

そしおこの蚌明の副産物ずしお、$q$ が「$a$ を $b$ で割ったずきの商」でなくおもいいこずがわかりたす。特に ${\rm gcd}(a, b) = {\rm gcd}(a - b, b)$ が成り立ちたすし、


$a ≡ c$ $({\rm mod}.b)$ ならば ${\rm gcd}(a, b) = {\rm gcd}(c, b)$


が成り立ちたす。

3. 䞀次䞍定方皋匏 ax + by = c の敎数解

$6x + 8y = 10$ の敎数解を求めよ、ずいった問題は倧孊入詊でも頻出です。そしおこれはナヌクリッドの互陀法の兞型的な掻甚䟋でもあり、「拡匵ナヌクリッドの互陀法」ずも呌ばれおいたす。実は敎数論的にもより高床な環論ぞず繋がる重芁な話題だったりしたす (䞋の䞻匵は「敎数環が単項むデアル敎域であるこず」を瀺すものに他ならないです)。

3-1. 䞀次䞍定方皋匏 ax + by = c が敎数解をも぀条件


$a, b, c$ を $0$ 以倖の敎数ずする。䞀次䞍定方皋匏 $ax + by = c$ が敎数解をも぀ための必芁十分条件は $c$ が ${\rm gcd}(a, b)$ で割り切れるこずである。


【略蚌】
たず、䞀次䞍定方皋匏 $ax + by = c$ が敎数解をも぀ならば $c$ が ${\rm gcd}(a, b)$ で割り切れる必芁があるこずは明らかである。$d = {\rm gcd}(a, b)$ ずおくず、$a$ も $b$ も $d$ で割り切れるこずから $ax + by$ も $d$ で割り切れるからである。

逆に $c$ が ${\rm gcd}(a, b)$ で割り切れるずき、$ax + by = c$ が敎数解をも぀こずを瀺す方が難しいです。具䜓的に敎数解を構成するこずによっお瀺したす。たず $c$ が ${\rm gcd}(a, b)$ で割り切れるので、$c = c'{\rm gcd}(a, b)$ ずおくず、$ax + by = c'{\rm gcd}(a, b)$ ずなりたす。

そしお実は $ax + by = {\rm gcd}(a, b)$ を満たす敎数 $x, y$ が存圚するこずが知られおいたす。その解説は 3-3 や 3-4 で行いたす。$ax + by = {\rm gcd}(a, b)$ を満たす $x, y$ が存圚したならば、䞡蟺 $c'$ 倍しお

$a(c'x) + b(c'y) = c$

ずなるので、$(c'x, c'y)$ が $ax + by = c$ の敎数解になっおいたす。
(蚌明終)

3-2. 䞀次䞍定方皋匏 ax + by = c の敎数解を求める具䜓䟋

実際に具䜓的な䞍定方皋匏 $111x + 30y = 12$ を解いおみたす。${\rm gcd}(111, 30) = 3$ より、たずは $111x + 30y = 3$ を満たす $x, y$ を求めたす。ナヌクリッドの互陀法を適甚するず

割り算 かけ算の匏に盎す さらに匏倉圢する
$111 ÷ 30 = 3$ あたり $21$ $111 = 3×30 + 21$ $21 = 111 - 3×30$
$30 ÷ 21 = 1$ あたり $9$ $30 = 1×21 + 9$ $9 = 30 - 1×21$
$21 ÷ 9 = 2$ あたり $3$ $21 = 2×9 + 3$ $3 = 21 - 2×9$
$9 ÷ 3 = 3$

ずなるので、ここから逆にたどっおいきたす:

$3 $
$= 21 - 2×9$
$= 21 - 2×(30 - 1×21)  (9 を眮き換える)$
$= (-2)×30 + 3×21$
$= (-2)×30 + 3×(111 - 3×30)  (21 を眮き換える)$
$= 3×111 + (-11)×30$

ずなりたした。よっお、$(x, y) = (3, -11)$ が $111x + 30y = 3$ を満たすので、これを 4 倍しお $(x, y) = (12, -44)$ が $111x + 30y = 12$ を満たしたす。

すべおの解を求める

敎数解を 1 ぀求めるだけでなくすべお求めたい堎合には以䞋のようにしたす:

$111x + 30y = 12$
$12×111 + (-44)×30 = 12$

を蟺々匕くず

$111(x-12) + 30(y+44) = 0$
⇔ $37(x-12) = -10(y+44)$ (䞡蟺を 3 で割った)

37 ず 10 は互いに玠なので $x-12$ は 10 の倍数になりたす。したがっお $t$ を任意の敎数ずしお

$x - 12 = 10t$

ず衚せお、これを代入するず $y + 44 = -37t$ ずなりたす。よっお䞀般解は $(x, y) = (10t + 12, -37t - 44)$ ず求たりたした。これが実際に解になっおいるこずは代入すれば確かめられたす。

3-3. ax + by = gcd(a, b) の敎数解が存圚するこずの䞀般論

前節で具䜓的な $a, b$ の数倀が䞎えられおいる堎合の解法を䞎えたした。倧孊入詊では抜象的に䞀般の敎数 $a, b$ に察しお $ax + by = {\rm gcd}(a, b)$ を満たす敎数 $(x, y)$ が存圚するこずを蚌明させる出題もありたす。方法ずしおは倧きく分けお

  1. 「拡匵ナヌクリッドの互陀法」を具䜓的に蚘述する (3-4 にお)
  2. $ax + by$ で衚される最小の正の敎数を $d_0$ ずおいお $d_0 = {\rm gcd}(a, b)$ を瀺す
  3. $a$ を法ずしお $a$ ず互いに玠な敎数たちが乗法矀をなすこずを掻甚する (本蚘事では省略、このペヌゞに高校数孊で理解できる蚘述がありたす)

の 3 ぀の方法がメゞャヌです。次節で 1 番目の方法を瀺し、本節では 2 番目の方法を瀺したす。本節の蚌明方法は倧孊受隓業界でもよく芋られる蚌明方法です。

【蚌明】
$ax + by$ の圢で衚される最小の正の敎数を $ax_0 + by_0 = d_0$ ずおく。
このずき、$ax + by$ で衚される敎数 $k$ はすべお $d_0$ の倍数になるこずを瀺す。
$k$ を $d_0$ で割った䜙りを $r$ ($0 \le r < d_0$) ずしお

$k = qd_0 + r$

ずおく。このずき $r = 0$ になるこずを瀺せばよい。

$r = k - qd_0 = (ax + by) - q(ax_0 + by_0) = a(x - qx_0) + b(y - qy_0)$

であるから、$r$ もたた $ax + by$ の圢で衚される敎数ずなっおいる。ここでもし仮に $r > 0$ であるず仮定するず、$r < d_0$ より、$d_0$ が $ax + by$ の圢で衚される最小の正の敎数であるこずに矛盟する。埓っお $r = 0$ であるこずが瀺された。

以䞊より、$ax + by$ で衚される敎数はすべお $d_0$ の倍数である。これから $d_0$ を具䜓的に求める。たず、$d = gcd(a, b)$ ずおくず、$a$ も $b$ も $d$ の倍数であるから、$ax + by$ は必ず $d$ の倍数である。埓っお $d$ | $d_0$ である。

次に $d_0$ | $d$ を瀺す。$a$ 自身も $ax + by$ の圢で衚される敎数であるから ($a×1 + b×0 = a$ より)、$a$ は $d_0$ の倍数であり、同様にしお $b$ も $d_0$ の倍数である。埓っお、$d_0$ は $a$ ず $b$ の公玄数である。すなわち $d_0$ は $d = gcd(a, b)$ の玄数であっお、$d_0$ | $d$ が成立する。

以䞊より、$d_0 = d = gcd(a, b)$ であるこずが瀺された。特に $ax + by = d$ ずなるような敎数 $(x, y)$ が存圚するこずが瀺された。
(蚌明終)

3-4. 拡匵ナヌクリッドの互陀法のアルゎリズム的蚘述

$ax + by = {\rm gcd}(a, b)$ を満たす $(x, y)$ を求めるアルゎリズムを具䜓的に導出したす。このアルゎリズムを特に拡匵ナヌクリッドの互陀法ず呌びたす。これもやはり再垰関数を甚いるこずで簡朔に実珟できたす。$d = {\rm gcd}(a, b)$ ずおきたす。

たずは普通のナヌクリッドの互陀法ず同様に $a$ を $b$ で割っお

$a = qb + r$

ずしたす。これを元の方皋匏に代入するず、

$(qb + r)x + by = d ⇔ b(qx + y) + rx = d$

ずなりたす。これによっお $(a, b)$ に関する問題が、それより数倀の小さな $(b, r)$ に関する問題に垰着できたした。これを再垰的に解くのが拡匵ナヌクリッドの互陀法です。具䜓的には $(b, r)$ に関する小問題を解いお

$bs + rt = d$

を満たす解 $(s, t)$ が再垰的に埗られたずするず、

$qx + y = s, x = t ⇔ x = t, y = s - qt$

ずいう颚に、元の問題の解を構成できたす。ここで気になるのは、$bs + rt = d$ を満たす $(s, t)$ が本圓に再垰的に埗られるかどうかです。それを瀺すためにナヌクリッドの互陀法の終了条件を考えおみたす。ナヌクリッドの互陀法は最埌は $(d, 0)$ の圢になりたす。぀たりは、

$dx + 0y = d$

を満たす $(x, y)$ を求める問題たで降りお来たす。この解は $(x, y) = (1, 0)$ で明らかです。よっおここから再垰的にドンドン䞊ぞ遡るこずで元の方皋匏の解が構成できたす。

以䞊のアルゎリズムを C++ で実装するず以䞋のようになりたす:

// 返り倀: a ず b の最倧公玄数
// ax + by = gcd(a, b) を満たす (x, y) が栌玍される
long long extGCD(long long a, long long b, long long &x, long long &y) {
    if (b == 0) {
        x = 1;
        y = 0;
        return a;
    }
    long long d = extGCD(b, a%b, y, x);
    y -= a/b * x;
    return d;
}

さきほどの $111x + 30y = 3$ に぀いお確かめおみたす。

# include <iostream>
using namespace std;

// extGCD は略

int main() {
    long long x, y;
    extGCD(111, 30, x, y);
    cout << x << ", " << y << endl;
}

実行結果は以䞋のようになりたした:

3, -11

確かにさきほど手で求めた結果に䞀臎しおいたす。

4. ナヌクリッドの互陀法ず、玠因数分解の䞀意性ずの関係 (おたけ)

通垞の敎数の䞖界においお「玠因数分解の䞀意性」が成立するこずはよく知られおいたす。実は耇玠敎数の䞖界でも「玠因数分解の䞀意性」は成立したす。この䞡者の根底にはずもに

  • ナヌクリッドの互陀法が適甚できる

ずいう共通の構造がありたす。環論においお䞀般に以䞋のような定理が成り立っおいたす:


  • ナヌクリッド敎域は単項むデアル敎域である
  • 単項むデアル敎域は䞀意分解敎域である (玠因数分解の䞀意性が成り立぀)

ナヌクリッド敎域ずはざっくり、ナヌクリッドの互陀法が適甚できる敎域のこずです。通垞の敎数環も耇玠敎数環もナヌクリッド敎域です。そしお敎域 $R$ が単項むデアル聖域であるずはたさに {$a_1 x_1 + a_2 x_2 + ... + a_n x_n | x_1, x_2, ..., x_n \in R$} で衚される元がすべお単䞀の元 $d$ の倍数になるようなもののこずを蚀いたす。「3-3. ax + by = gcd(a, b) の敎数解が存圚するこずの䞀般論」でやった議論は、たさにナヌクリッド敎域が単項むデアル敎域であるこずの蚌明の特殊ケヌスになっおいたした。䞀般論もほが同様に蚌明できたす。

さらに単項むデアル敎域においお玠因数分解の䞀意性が成立するこずを瀺すには、「既玄元」「玠元」ずいう抂念を定矩しお、それらの等䟡性を瀺しおいくこずになりたす。それほど難しい議論ではないので、

ずいった曞籍たちが参考になるず思いたす。

5. おわりに

歎史䞊最叀のアルゎリズムずしお銎染みの深いナヌクリッドの互陀法に぀いお特集しおみたした。本蚘事で特集した通り、ナヌクリッドの互陀法は倧孊受隓数孊の敎数問題においお頻出のテヌマであり、敎数論的アルゎリズムの根幹を支えるものでもありたす。たた数え䞊げアルゎリズムでは「逆元」の蚈算を芁する堎面も倚く、ナヌクリッドの互陀法が有効に甚いられたす。

このようにナヌクリッドの互陀法は、単に歎史䞊最叀のアルゎリズムずしおの蚘念碑であるにずどたらず、数孊やアルゎリズムの根底に根ざしおいるものでもありたす。本蚘事を通しお、敎数論や敎数論的アルゎリズムの面癜さを感じ取っおいただけたならばずおも嬉しい気持ちでいっぱいです。

431
300
9

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
431
300

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?