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?

paizaラーニング問題集「【シミュレーション 1】反復横跳び」を解いてみた

Last updated at Posted at 2024-10-11

▼考え方

ポイントになる考え方1.~6.を以下に示します。

1.【題意の掘り下げ】左の線を元の位置から外側にXcm遠ざけられたあとに、中央の線から左の線をまたぐときに、Xcm多く移動します。次に、左の線から中央の線をまたぐときに、さらにXcm多く移動します。

2.【題意の掘り下げ】例えばN=1のとき、友達が線をまたぐのがN*4+2回(6回目)までは、本来の反復横跳びの移動距離に差はありません。7回目に中央の線から左の線をまたぐのでXcm、8回目に左の線から中央の線をまたぐのでXcm、多く移動します。

3.移動距離に差がない移動回数は除外して考えます。Kが移動回数で、N*4+2が移動距離に差がない移動回数です。

4.N=1、Xcm、K=20とします。移動回数1~6は移動距離に差がありません。7回目にXcm、8回目にXcm、多く移動します。その時の例を以下に示します。

[移動回数]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
       X X      X  X        X  X        X  X
[Xcm多く移動するタイミング]

ここで、移動回数6~20を変数hとし、6~9,10~13,14~17は同じパターン(なし,X,X,なし)が繰り返されるのでグループgとします。

5.hに含まれるグループgの個数はh//4であり、gにはXが2つ含まれます。

6.グループgなれなかった移動回数18~20は、Xが2つ含まれます。

▼コード

########## 処理0(準備) インプット,リスト定義 ###########

N,X,K = map(int,input().split())

########## 処理1 移動距離の差を計算 ###########

# 考え方1.~4.
h = K-(N*4+2)+1

# 考え方5.
g = (h//4)*X*2

# 考え方6.
gn = 0
if h % 4 == 2:
    gn += X
elif h % 4 == 3:
    gn += X*2

print(g+gn)
0
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
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?