結果
問題 | No.550 夏休みの思い出(1) |
ユーザー |
|
提出日時 | 2017-07-30 04:41:54 |
言語 | Ruby (3.4.1) |
結果 |
AC
|
実行時間 | 127 ms / 2,000 ms |
コード長 | 1,489 bytes |
コンパイル時間 | 239 ms |
コンパイル使用メモリ | 7,424 KB |
実行使用メモリ | 13,312 KB |
最終ジャッジ日時 | 2024-10-11 05:41:27 |
合計ジャッジ時間 | 7,397 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 55 |
コンパイルメッセージ
Syntax OK
ソースコード
#!/usr/bin/rubyclass Integerdef pow_binary_mod(y,m)x = selfz = 1while y!=0z=z*x%m if y&1!=0x=x*x%my>>=1endzenddef miller_rabinn=self.abs #todo#return true if n==2return false if n==1||n%2==0d=n-1s=0while d%2==0d/=2s+=1enda=15.times{|_| #todo#a+=1a+=1 while a.gcd(n)!=1 #todo#r=a.pow_binary_mod(d,n)next if r==1||r==n-1if s.times.none?{|j|r=r.pow_binary_mod(2,n)r==n-1}return falseend}return trueenddef rho3#get one divisordef rhonext(x,n,seed) (x*x+seed)%n endn=self#raise if n<2[1,3,5].each{|seed| #todo#x=y=1 #todo#q=i=1loop{if i==qy=xq*=2endx=rhonext(x,n,seed)d=(x-y).abs.gcd(n)if d>1break if d==nreturn dendi+=1}}nilenddef rho2#get all divisorsn=self#raise if n<2r=[]while n>1if n.miller_rabinreturn r+[n]elsex=n.rho3if !xSTDERR.puts 'suspicious: %d'%nreturn r+[n]endr+=x.rho2n/=xendendrenddef rhon=selfr=[]if n<0r<<-1n=-nendreturn r if n<2[2].each{|e| #todo#while n%e==0n/=er<<eend}return r if n==1r+n.rho2endendA,B,C=gets.split.map &:to_iK=C==0?B: Ch=Hash.new 0[-1,*K.abs.rho].each{|e|h[e]+=1}c=h.map{|n,p|(0..p).map{|i|n**i}}puts [0,*c.shift.product(*c).map{|_|_.reduce(1,:*)}].select{|x|x**3+A*x**2+B*x+C==0}.sort*' '