結果

問題 No.1004 サイコロの実装 (2)
ユーザー miya145592miya145592
提出日時 2023-05-20 04:32:37
言語 PyPy3
(7.3.15)
結果
WA  
実行時間 -
コード長 1,025 bytes
コンパイル時間 150 ms
コンパイル使用メモリ 82,532 KB
実行使用メモリ 66,368 KB
最終ジャッジ日時 2024-06-01 03:11:18
合計ジャッジ時間 3,296 ms
ジャッジサーバーID
(参考情報)
judge1 / judge4
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 40 ms
53,148 KB
testcase_01 AC 40 ms
52,924 KB
testcase_02 AC 40 ms
53,484 KB
testcase_03 AC 40 ms
53,200 KB
testcase_04 AC 40 ms
53,568 KB
testcase_05 AC 40 ms
53,700 KB
testcase_06 WA -
testcase_07 AC 39 ms
53,188 KB
testcase_08 WA -
testcase_09 WA -
testcase_10 WA -
testcase_11 WA -
testcase_12 WA -
testcase_13 AC 39 ms
52,772 KB
testcase_14 WA -
testcase_15 WA -
testcase_16 WA -
testcase_17 WA -
testcase_18 WA -
testcase_19 WA -
testcase_20 WA -
testcase_21 WA -
testcase_22 WA -
testcase_23 WA -
testcase_24 WA -
testcase_25 WA -
testcase_26 WA -
testcase_27 WA -
testcase_28 WA -
testcase_29 WA -
testcase_30 WA -
testcase_31 WA -
testcase_32 WA -
testcase_33 WA -
testcase_34 WA -
testcase_35 WA -
testcase_36 RE -
testcase_37 RE -
testcase_38 WA -
testcase_39 WA -
権限があれば一括ダウンロードができます

ソースコード

diff #

a, b, x, N = map(int, input().split())
X = [x]
while True:
    nxt = (X[-1]*a+b)%6
    if nxt in X:
        break
    X.append(nxt)

nowT = 0
nowA = 0

cntT = [0, 0]
cntA = [0, 0]

seenT = set()
seenA = set()

cnt = -1
si = 0
for i in range(N):
    saiT = X[si%len(X)]+1
    if (nowT, saiT) in seenT:
        cnt = i+1
        break
    seenT.add((nowT, saiT))
    nowT += saiT
    nowT %= 2
    cntT[nowT]+=1
    
    si += 1
    saiA = X[si%len(X)]+1
    if (nowA, saiA) in seenA:
        assert()
        break
    seenA.add((nowA, saiA))
    nowA += saiA
    nowA %= 2
    cntA[nowA]+=1

    si+=1

if cnt==-1:
    scoT = min(cntT)
    scoA = min(cntA)
    print(scoT, scoA)
    exit()

c = N//cnt
m = N%cnt

cntT = [cntT[0]*c, cntT[1]*c]
cntA = [cntA[0]*c, cntA[1]*c]

for i in range(m):
    saiT = X[si%len(X)]+1
    nowT += saiT
    nowT %= 2
    cntT[nowT]+=1
    
    si += 1
    seenA.add((nowA, saiA))
    nowA += saiA
    nowA %= 2
    cntA[nowA]+=1

    si+=1

scoT = min(cntT)
scoA = min(cntA)
print(scoT, scoA)
0