LoginSignup
2
0

More than 5 years have passed since last update.

Atcoder Beginer Contest 073 A問題 解説

Last updated at Posted at 2018-02-25

問題

考察

2桁の数のうち1桁でも「9」が含まれていればYesを出力,含まれなければNoを出力すればいいのでは?

コード

+++++++++++
[->+++++<]
>++
>,
[-<->]

[-]+<[

>>>>>
+++++++++++
[->+++++<]
>++
>,
[-<->]

[-]+<[
>>>>>
+++++++++++++++
[->+++++<]
>+++
.
++++++++++
++++++++++
++++++++++
+++
.
<<<<<

>-+<[-]]>

[
>>>
++++++++++++++++
[->+++++<]
>+++++++++
.
++++++++++++
.
++++++++++++++
.
<<<
[-]
]
<<<<<
>-+<[-]]>

[
++++++++++++++++
[->+++++<]
>++++
.
++++++++++++
.
++++++++++++++
.
[-]
]

解説

pn(n≧0) は先頭からnポインタ目のポインタを,*pnはその値を指す.

+++++++++++
[->+++++<]
>++

*pn0をASCIIコード57,'9'までインクリメントする.

>,

*p1に入力の1文字目を格納.

[-<->]

*p1が0になるまで,*p0と*p1の値をデクリメント.
つまり,*p0-=*p1.

[-]+<[

*p1を0にして,1加算.*p1=1
p0に移動し,*p0!=0のとき[]内の処理を行う.

if{f1}else{f2}については以下のコードで表すことができる.

>[-]+<[f1>-<[-]]>[f2[-]]

今回はf1に先ほどまでと同じ処理を書き,その中のtrueのときNoを出力,falseのときYesを出力する処理を,
f2にYesを出力する処理を当てはめた.

ただ,途中[-]の処理で*p1が-1になるバグ?が発生していたので微調整している.

感想

バグに少々手間取ったが,それさえ分かれば問題なかった.
出力文字を予め用意しておくと楽かもしれないと思った.
精進したい.

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