0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

シミュレーション

Last updated at Posted at 2024-02-07

H = int(input())
P_dmg_1 = 1
P_dmg_2 = 1
M_dmg_1 = 1
M_dmg_2 = 1
#turnは3から
#Hははじめから2減らす
turn = 2
H = 35- 2
while True:
    turn += 1
    P_dmg_1 = P_dmg_2
    P_dmg_2 = M_dmg_1 + M_dmg_2
    M_dmg_1 = M_dmg_2
    M_dmg_2 = P_dmg_1  + P_dmg_2 * 2
    
    H -= M_dmg_2
    if H < 0:
        break

print(turn)
H = int(input())
P_dmg_1 = 1
P_dmg_2 = 1
M_dmg_1 = 1
M_dmg_2 = 1
#turnは3から
#Hははじめから2減らす
turn = 2
H = 35- 2
while True:
    turn += 1
    P_dmg_1 = P_dmg_2
    P_dmg_2 = M_dmg_1 + M_dmg_2
    M_dmg_1 = M_dmg_2
    M_dmg_2 = P_dmg_1  + P_dmg_2 * 2
    #とりあえずプリント
    print(P_dmg_1)
    print(P_dmg_2)
    print(M_dmg_1)
    print(M_dmg_2)
    
    H -= M_dmg_2
    if H < 0:
        break

print(turn)
1 ← P2回目
2 ← P3回目
1 ← M2回目
5 ← M3回目(???)
2 
6
5
14
6
19
14
44

手動で計算すると
ケース1
1回目
HP 7
Pの攻撃1
Mの攻撃1

2回目
HP 6
Pの攻撃1
Mの攻撃1

3回目
HP 5
Pの攻撃 1+1 = 2
Mの攻撃1 1*2 + 1 = 3

4回目
HP 2
Pの攻撃 2+1 = 3
Mの攻撃1 3*2 + 1 = 7
この時点HP0


ケース2
1回目
HP 35
Pの攻撃1
Mの攻撃1

2回目
HP 34
Pの攻撃1
Mの攻撃1

3回目
HP 33
Pの攻撃 1+1 = 2
Mの攻撃1 1*2 + 1 = 3

4回目
HP 30
Pの攻撃 3+1 = 4
Mの攻撃1 2*2 + 1 = 5

5回目
HP 25
Pの攻撃 5+3 = 8
Mの攻撃1 5*2 + 3 = 13

6回目
HP 13
Pの攻撃 13+5 = 18
Mの攻撃1 13*2 + 5 = 31

この時点でHP0

なので、ちょっと変ですね。。。
なんでかというと、
P_dmg_1 = P_dmg_2
P_dmg_2 = M_dmg_1 + M_dmg_2
M_dmg_1 = M_dmg_2
M_dmg_2 = P_dmg_1 + P_dmg_2 * 2

これだと、P_dmg_2はすでに今回分になってしまっているので、前回分のにならないからですね。。。orz

だから、ずらす動作と、計算要素は別にしないとだめらしいです。
時間がもうなかったので答えを見ました。
こっちは配列ですが思った通りずらしてましたね。。。


H = int(input())
a = [0, 1, 1]
b = [0, 1, 1]
dmg = 2
i = 2
while dmg < H:
    a[0] = a[1]
    a[1] = a[2]
    b[0] = b[1]
    b[1] = b[2]
    
    a[2] = b[0] + b[1]
    b[2] = a[0] + 2*a[1]
    
    dmg += b[2]
    
    i += 1

print(i)


勉強になりました!

0
0
2

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?