結果
| 問題 | No.368 LCM of K-products | 
| コンテスト | |
| ユーザー |  | 
| 提出日時 | 2018-02-02 00:53:13 | 
| 言語 | Ruby (3.4.1) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 995 ms / 2,000 ms | 
| コード長 | 650 bytes | 
| コンパイル時間 | 54 ms | 
| コンパイル使用メモリ | 7,680 KB | 
| 実行使用メモリ | 12,800 KB | 
| 最終ジャッジ日時 | 2024-09-22 14:55:56 | 
| 合計ジャッジ時間 | 8,070 ms | 
| ジャッジサーバーID (参考情報) | judge4 / judge1 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| other | AC * 35 | 
コンパイルメッセージ
Syntax OK
ソースコード
def ascan; gets.split.map(&:to_i);end
def mypow(x,w,md)
    y=1
    while 0<w
        y = (x*y)%md if w.odd?
        w/=2
        x = (x*x)%md
    end
    y
end
require 'prime'
MD = 1000000007
N,K = ascan
aa = ascan.sort
# p aa.combination(K).map{|z| z.reduce(:*)}.reduce(:lcm)%MD
primes = aa.reduce({}) do |s,a|
    if a.prime?
        s[a] ||= []
        s[a] << 1
    else
        Prime.prime_division(a).each do |k,v|
            s[k] ||= []
            s[k] << v
        end
    end
    s
end
ans = 1
primes.each do |k, v|
    ans *= mypow(k,(v.sort.pop([K,v.size].min).reduce(:+)),MD)
    ans %= MD
end
p ans
# case
# 3 2
# 100 11 10
            
            
            
        