結果
| 問題 |
No.3178 free sort
|
| コンテスト | |
| ユーザー |
prin_kemkem
|
| 提出日時 | 2025-06-13 21:39:58 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 1,372 bytes |
| コンパイル時間 | 169 ms |
| コンパイル使用メモリ | 82,884 KB |
| 実行使用メモリ | 67,644 KB |
| 最終ジャッジ日時 | 2025-06-13 21:40:03 |
| 合計ジャッジ時間 | 4,332 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | RE * 5 |
| other | RE * 40 |
ソースコード
from collections import defaultdict, deque, Counter
from functools import cache
# import copy
from itertools import combinations, permutations, product, accumulate, groupby, chain
from more_itertools import distinct_permutations
from heapq import heapify, heappop, heappush, heappushpop
import math
import bisect
from pprint import pprint
from random import randint, shuffle, randrange
from sortedcontainers import SortedSet, SortedList, SortedDict
import sys
sys.setrecursionlimit(5000)
input = lambda: sys.stdin.readline().rstrip('\n')
inf = float('inf')
mod1 = 10**9+7
mod2 = 998244353
def ceil_div(x, y): return -(-x//y)
#################################################
def cmb(n, r):
if r < 0 or r > n:
return 0
r = min(r, n-r)
return fact[n]*factinv[r]%p*factinv[n-r]%p
def pmt(n, r):
if r < 0 or r > n:
return 0
return fact[n]*factinv[n-r]%p
p = mod2
N = 10**6 #Nは必要分だけ用意する
fact = [1, 1] #fact[n]: n! mod p
factinv = [1, 1] #factinv[n]: n!^(-1) mod p
inv = [0, 1] #inv[n]: n^(-1) mod p
for i in range(2, N+1):
fact.append((fact[-1]*i)%p)
inv.append((-inv[p%i]*(p//i))%p)
factinv.append((factinv[-1]*inv[-1])%p)
N = input()
D = len(N)
cnt = Counter(map(int, N))
ans = cmb(D-1, cnt[0])
D -= cnt[0]
for k in range(1, 10):
ans *= cmb(D, cnt[k])
ans %= mod2
D -= cnt[k]
print(ans)
prin_kemkem