ベルト本


質問する


車輪とベルトで実験する科学教具がある.この教区には様々な車輪とベルトが含まれており、複数の車輪を異なる場所に挿入できる教区板が含まれている.
教具板には車輪を挿入できる軸が並んでいる.すべての軸にホイールを挿入する場合、ホイール間の衝突を避けるために、軸と軸の間の距離は十分に遠い.各軸には車輪が1つ差し込まれている.車輪は左から1番と1番の順に番号が付けられています.
教具板には、隣接する2つの車輪が常に1つのベルトで接続されています.この場合、ベルトは0字で接続したり、8字で1回接続したりすることができます.また、一方の車輪が回転すると、ベルトで連結された他方の車輪も回転するので、2つの車輪の大きさの違いによって、2つの車輪の回転数が異なる場合があります.
次の例では、3つのベルトと4つのホイールに関する情報を示します.このときベルト形態は0字形態(非屈曲形態)面0,8字形態(屈曲形態)面1である.

ベルト本
ホイールi回転数ホイールi+1回転数
1 1 2 0
2 1 5 1
3 2 1 0
この場合、ベルト1は、車輪1と車輪2とを0字形に連結し、車輪1が回転すると同時に車輪2が2回回転する.すなわち、車輪1が時計回りに回転すると、車輪2は時計回りに2回転する.
ベルト2は、車輪2と車輪3とをねじれた形で連結し、車輪2が1回回転すると車輪3が5回回転し、車輪2が時計回りに1回回転すると、車輪3が反時計回りに5回回転する.
ベルト3は、車輪3と車輪4とを0字に連結し、車輪3が2回回転すると、車輪4が1回回転し、車輪3が2回時計回りに回転すると、車輪4が1回時計回りに回転する.
このため、車輪1を初めて時計回りに回転させ、車輪2と車輪3を通過させると、最終車輪4は反時計回りに5回回転する.
ベルトで連結されたホイールの回転数の比とベルトの形状を順番に指定すると、最初のホイールが時計回りに毎分1回回転すると、最後のホイールの回転方向と毎分の回転数を出力するプログラムが作成される.
入力
第1行は、ベルト個数を表す自然数M(1≦M≦1000)を与える.次のM行では、1番ベルトから、2つの車輪の回転数の比を表す2つの正の整数a、b、およびベルトの形式0または1が順次与えられる.すなわち、i番ベルトについて、i番ベルトが連結された2つのホイールiおよびi+1が、i番ベルトaの回転期間において、ホイールi+1がb回回転し、i番ベルトの形状がs(ねじれない形状が0、ねじれの形状が1)であれば、aおよびbは、その後sに1行付与される.このとき、全ての車輪の毎分回転数は109以下の整数に入力される.a,bは109以下の正の整数であり,aとbこそである.
しゅつりょく
M+1号ホイールの回転方向(時計回り0、反時計回り1)と毎分の回転数を1行に出力します.
入力例1
3
1 2 0
1 5 1
2 1 0
サンプル出力1
1 5
入力例2
4
1 10 1
2 1 1
5 6 0
3 2 0
サンプル出力2
0 4

解法


各入力に2番目のホイールの回転数を乗算し、1番目のホイールの回転数で割った値を累積します.
ベルト形態1は偶数個が0,奇数個が1である.

コード#コード#

M = int(input())
result = 1
direction = 0
for _ in range(M):
    a, b, belt = map(int, input().split())
    result = result * b / a
    direction = direction + 1 if belt == 1 else direction
print(f'{direction % 2} {result:.0f}')
ベルト本