▼考え方
ポイントになる考え方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)