結果

問題 No.895 MESE
ユーザー MiyamonY
提出日時 2019-09-28 21:09:49
言語 Scheme
(Gauche-0.9.15)
結果
TLE  
実行時間 -
コード長 1,272 bytes
コンパイル時間 37 ms
コンパイル使用メモリ 6,816 KB
実行使用メモリ 66,308 KB
最終ジャッジ日時 2024-10-03 04:14:41
合計ジャッジ時間 9,567 ms
ジャッジサーバーID
(参考情報)
judge5 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 10 TLE * 1 -- * 15
権限があれば一括ダウンロードができます

ソースコード

diff #

;;; File:  main.scm
;; Author: ymiyamoto
;;
;; Created on Sat Sep 28 20:04:17 2019
;;
(define-syntax read-number
  (syntax-rules ()
    ((_ nums)
     (define-values nums
       (apply values (map string->number (string-split (read-line) #\space)))))))

(define-syntax read-numbers
  (syntax-rules ()
    ((_ as)
     (define as (map string->number (string-split (read-line) #\space))))
    ((_ as n)
     (define as (map (lambda (_) (map string->number (string-split (read-line) #\space))) (iota n))))))

(define-syntax 1+ (syntax-rules () ((_ x) (+ x 1))))

(define-syntax 1- (syntax-rules () ((_ x) (- x 1))))

(define MOD 1000000007)

(define (mod+ a . b)
  (fold (lambda (x acc) (modulo (+ x acc) MOD)) a b))

(define (mod* a . b)
  (fold (lambda (x acc) (modulo (* x acc) MOD)) a b))

(define (comb n k)
  (define (fact n)
    (if (<= n 0)
	1
	(mod* n (fact (1- n)))))
  (let ((factn (fact n))
	(powk (expt-mod (fact k) (- MOD 2) MOD))
	(pownk (expt-mod (fact (- n k)) (- MOD 2) MOD)))
    (mod* factn powk pownk)))

(define (solve)
  (read-number (a b c))

  (print (apply mod+
		(map (lambda (i)
		       (mod* (comb (- (+ a b c) i 2) (- c 1))
			     (comb (- (+ a b) i 1) (- b 1))
			     (1- (expt-mod 2 (- (+ a b c) i 1) MOD))))
		     (iota a 1)))))

(solve)
0