SlideShare a Scribd company logo
1 of 13
JOI模擬予選2013 6番解説
DEGwer
問題概要
• 0~N-1までの整数をK個並べて、その積をmod N
でMと合同にする方法は何通りあるか

• N<=10^12,K<=10^18
想定TLE解法①
• 素直にDP
• DP[何個並べたか][いまの積は何か]をどんどん
更新していく
• O(N^2K)
• テストケース1のみが解けて20点が得られる
想定TLE解法②
• 行列累乗を使う
• 知らない人は蟻本を見てください

• O(N^3log K)
• テストケース1と2が解け、40点が得られる
想定TLE解法③
• 実は状態数が圧縮できる
• 例えばmod 60の場合、先ほどの20点DPで、
DP[2][i]=DP[14][i]=DP[22][i]などとなるので、こ
の状態が圧縮できる(これはDPの漸化式が等しい
ことから明らか)
想定TLE解法③
• では、どのようなときに状態数が圧縮できるか?
• 「tとNの最大公約数が等しいようなもの」はす
べてDPの漸化式が等しいので、同じ状態にでき
る
• よって、Nの約数の個数通りの状態のみが存在
する
想定TLE解法③
• Nの約数の個数はどれくらいか?
• N<=10^12なるNに対しては、4032個の約数を
持つ97772875200が最大
• Nの値に対してそれほど大きくならない
想定TLE解法③
• この圧縮を用いる
• これで行列累乗を行えば、テストケース1,2,4が
解けて60点が得られる
想定解法
• 実は行列累乗をしなくてもよい
• DP[p][q]:2^p個の整数を並べたときにその積を
XとするとGCD(X,N)=qとなるような場合の数
• と定義すると、列のマージはO((要素数)^2)でで
きるので、全体でO((Nの約数の個数)^2log K)で
このDPテーブルが計算できる
想定解法
• このDPテーブルが計算できれば、あとは適当に
マージするだけ
• これで100点がとれる
• おめでとうございます
注意すべきこと
• Nの値は大きいので、オーバーフローに注意
• Nの約数同士を掛け算して状態遷移を求めるの
もオーバーフローするので、掛ける数をa,bとす
るとa,bがNの約数であることを利用し、
a*GCD(N/a,b)で求まる
• そのほかにもオーバーフローポイントがたくさ
んあります
非想定解法
• テストケースが弱いらしいので適当な解法でも
通るらしいです

• ごめんなさい
おわりに
• かなり難しいと思います
• これが解ける人は赤になれると思うのでなって、
どうぞ

More Related Content

What's hot

purely functional data structures 5.3 日本語での説明
purely functional data structures 5.3 日本語での説明purely functional data structures 5.3 日本語での説明
purely functional data structures 5.3 日本語での説明Tetsuro Nagae
 
Permutation
PermutationPermutation
Permutationoupc
 
AtCoder Regular Contest 026 解説
AtCoder Regular Contest 026 解説AtCoder Regular Contest 026 解説
AtCoder Regular Contest 026 解説AtCoder Inc.
 

What's hot (6)

by_knzk
by_knzkby_knzk
by_knzk
 
purely functional data structures 5.3 日本語での説明
purely functional data structures 5.3 日本語での説明purely functional data structures 5.3 日本語での説明
purely functional data structures 5.3 日本語での説明
 
Permutation
PermutationPermutation
Permutation
 
Ml ch7
Ml ch7Ml ch7
Ml ch7
 
AtCoder Regular Contest 026 解説
AtCoder Regular Contest 026 解説AtCoder Regular Contest 026 解説
AtCoder Regular Contest 026 解説
 
RUPC2017:M問題
RUPC2017:M問題RUPC2017:M問題
RUPC2017:M問題
 

More from DEGwer

Cf219 d1e
Cf219 d1eCf219 d1e
Cf219 d1eDEGwer
 
Cf219 d1d
Cf219 d1dCf219 d1d
Cf219 d1dDEGwer
 
Good Sequences
Good SequencesGood Sequences
Good SequencesDEGwer
 
Escape from Stones
Escape from StonesEscape from Stones
Escape from StonesDEGwer
 
Escape from stones
Escape from stonesEscape from stones
Escape from stonesDEGwer
 
素数判定法
素数判定法素数判定法
素数判定法DEGwer
 

More from DEGwer (6)

Cf219 d1e
Cf219 d1eCf219 d1e
Cf219 d1e
 
Cf219 d1d
Cf219 d1dCf219 d1d
Cf219 d1d
 
Good Sequences
Good SequencesGood Sequences
Good Sequences
 
Escape from Stones
Escape from StonesEscape from Stones
Escape from Stones
 
Escape from stones
Escape from stonesEscape from stones
Escape from stones
 
素数判定法
素数判定法素数判定法
素数判定法
 

Joi模擬予選2013 6番解説