結果
問題 | No.1097 Remainder Operation |
ユーザー | McGregorsh |
提出日時 | 2023-07-13 13:20:39 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 535 ms / 2,000 ms |
コード長 | 2,331 bytes |
コンパイル時間 | 360 ms |
コンパイル使用メモリ | 86,976 KB |
実行使用メモリ | 133,056 KB |
最終ジャッジ日時 | 2023-10-13 02:23:04 |
合計ジャッジ時間 | 13,571 ms |
ジャッジサーバーID (参考情報) |
judge11 / judge15 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 247 ms
89,612 KB |
testcase_01 | AC | 240 ms
90,028 KB |
testcase_02 | AC | 243 ms
90,032 KB |
testcase_03 | AC | 245 ms
89,872 KB |
testcase_04 | AC | 247 ms
89,920 KB |
testcase_05 | AC | 246 ms
89,976 KB |
testcase_06 | AC | 241 ms
89,880 KB |
testcase_07 | AC | 299 ms
92,828 KB |
testcase_08 | AC | 301 ms
92,712 KB |
testcase_09 | AC | 300 ms
92,772 KB |
testcase_10 | AC | 301 ms
92,772 KB |
testcase_11 | AC | 303 ms
92,976 KB |
testcase_12 | AC | 511 ms
105,364 KB |
testcase_13 | AC | 503 ms
105,368 KB |
testcase_14 | AC | 505 ms
105,300 KB |
testcase_15 | AC | 508 ms
104,896 KB |
testcase_16 | AC | 499 ms
105,088 KB |
testcase_17 | AC | 505 ms
105,576 KB |
testcase_18 | AC | 517 ms
133,056 KB |
testcase_19 | AC | 530 ms
131,140 KB |
testcase_20 | AC | 528 ms
131,204 KB |
testcase_21 | AC | 531 ms
127,584 KB |
testcase_22 | AC | 535 ms
127,616 KB |
ソースコード
import sys from sys import stdin from fractions import Fraction import math from math import ceil, floor, sqrt, pi, factorial, gcd from copy import deepcopy from collections import Counter, deque, defaultdict from heapq import heapify, heappop, heappush from itertools import accumulate, product, combinations, combinations_with_replacement, permutations from bisect import bisect, bisect_left, bisect_right from functools import reduce, lru_cache from decimal import Decimal, getcontext, ROUND_HALF_UP def i_input(): return int(stdin.readline()) def i_map(): return map(int, stdin.readline().split()) def i_list(): return list(i_map()) def s_input(): return stdin.readline()[:-1] def s_map(): return s_input().split() def s_list(): return list(s_map()) def lcm(a, b): return a * b // gcd(a, b) def get_distance(x1, y1, x2, y2): d = sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2) return d def rotate(table): n_fild = [] for x in zip(*table[::-1]): n_fild.append(x) return n_fild sys.setrecursionlimit(10 ** 7) INF = float('inf') MOD = 10 ** 9 + 7 MOD2 = 998244353 alpa = 'abcdefghijklmnopqrstuvwxyz' ALPA = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' def main(): N = int(input()) A = i_list() logs = [] nums = set() now = 0 point = INF while True: p = now % N now += A[p] if p in nums: point = p break else: logs.append(p) nums.add(p) s = 0 for i in range(len(logs)): if logs[i] == point: s = i break dist = logs[:s] cycle = logs[s:] lendist = len(dist) lencycle = len(cycle) distcost = [] for i in range(lendist): distcost.append(A[dist[i]]) AD = list(accumulate(distcost)) cyclecost = [] for i in range(lencycle): cyclecost.append(A[cycle[i]]) CD = list(accumulate(cyclecost)) Q = int(input()) for i in range(Q): K = int(input()) K -= 1 if K < lendist: print(AD[K]) else: if lendist > 0: a = AD[-1] else: a = 0 amari = K - lendist aamari = amari % lencycle camari = amari // lencycle B = camari * CD[-1] C = CD[aamari] print(a + B + C) if __name__ == '__main__': main()