CFR 656 B. Scrambled ( Math, Periodic, Python )
題意:
這是愚人節題,瓶頸貌似是在要花點時間把這稍微被打亂的文章看完。
總之題意就是給 M, R,問 [ 0, ∞ ] 這些整數中,有多少百分比的 d 對任意一個 0 ≤ i < N 滿足 d % M[ i ] = R[ i ]。
資料規模:
N, MAXM, MAXR ≤ 16
解法:
顯然會以 LCM 為單位形成週期。由於數據範圍很小,直接暴力算一個 LCM 內有多少 d 滿足該式即可。
[Python] 內建函式filter, map, reduce | 羅倫斯的IT航海日誌 - 點部落
filter(), map(), reduce()
太潮了
reduce() 在 python3 貌似被搬到 functools 裡去了
這樣改來改去是頗煩的啦
但黑魔法就是這樣吧 甘願
from functools import reduce def gcd( x, y ): return x if y == 0 else gcd( y, x % y ) def lcm( x, y ): return x // gcd( x, y ) * y N = int( input() ) M = list( map( int, input().split() ) ) R = list( map( int, input().split() ) ) d = reduce( lcm, M ) cnt = 0 for i in range( d ): qq = False for j in range( N ): qq |= i % M[ j ] == R[ j ] cnt += qq print( cnt / d )