LoginSignup
1
0

More than 1 year has passed since last update.

競技プログラミングでdcを使う(4/?)

Last updated at Posted at 2021-08-31

1 2 3 4 5(執筆中)

はじめに

ここではif文を書くような場面でのコマンドを紹介します。

メモリについて

説明をする前にメモリについて解説します。前のページでs xとl xについて紹介しましたが、このxがメモリです。前のページでは変数と書きましたね。この後でxを実行すると表現しますが、これはxというコマンドを実行するという意味ではなくxに入っている内容を実行するという意味です。xには数値や文字列を入れることが出来ますが、xを実行するとそれがコード内に書かれていたときのように動きます。メモリは0で初期化されているのでメモリに何かを入れるような操作をしていない場合は0をスタックに積むことになります。このページではこの0を積む操作をする問題だけを扱います。

>x

スタックから2つの値を取り出し、一番上の数値が二番目の数値より大きい場合にxを実行します。

1 2>0

b_04_01.png

ややこしいのですが、この場合一番上は2になっているのでこうなります。
0というメモリには何も入れる操作をしていないので0が入っています。

2 2>0

b_04_02.png

不等号が成り立たない場合は何もしません。

!>x

他の大抵の言語と同様、「!」を前に付けると否定の意味になります。
スタックから2つの値を取り出し、一番上の数値が二番目の数値より大きい場合にxを実行します。

1 2!>0

b_04_03.png

2 2!>0

b_04_04.png

<x

面倒なのでここから説明は省きます。

2 1<0

b_04_05.png

1 2<0

b_04_06.png

!<x

2 1!<0

b_04_07.png

1 2!<0

b_04_08.png

=x

2 2=0

b_04_09.png

2 1=0

b_04_10.png

!=x

2 2!=0

b_04_11.png

2 1!=0

b_04_12.png

実際の問題

ABC016

[NO][YES]?%0=0rp
入力 1 1
出力 YES

a_016_1.png

入力 2 29
出力 NO

a_016_2.png

このように不等号が成り立つかで、スタックの数に差を付けて出力を操作します。

おわりに

ここまでの知識で解ける問題があるのでこちらの「単純なif」の箇所にある問題を解いてみましょう。
次回はもう少し複雑なif文を使うような場合の操作を勉強します。

1 2 3 4 5(執筆中)

1
0
0

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
1
0