結果

問題 No.3178 free sort
ユーザー ooaiu
提出日時 2025-06-14 14:26:35
言語 C++23
(gcc 13.3.0 + boost 1.87.0)
結果
AC  
実行時間 41 ms / 2,000 ms
コード長 643 bytes
コンパイル時間 3,149 ms
コンパイル使用メモリ 279,028 KB
実行使用メモリ 7,844 KB
最終ジャッジ日時 2025-06-14 14:26:42
合計ジャッジ時間 6,531 ms
ジャッジサーバーID
(参考情報)
judge5 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 5
other AC * 40
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <bits/stdc++.h>
#include <atcoder/modint>
using namespace std;
using mint = atcoder::modint998244353;
mint fact[2<<17], ifac[2<<17];
int main() {
	std::ios_base::sync_with_stdio(false);
	std::cin.tie(nullptr);
	fact[0] = ifac[0] = 1;
	for(int i = 1; i < 2<<17;i++) {
		fact[i] = fact[i - 1] * i;
		ifac[i] = fact[i].inv();
	}
	string S;
	cin >> S;
	const int N = S.size();
	vector<int> freq(10);
	for(int i = 0; i < N; i++) freq[S[i] - '0'] += 1;
	mint ans = 0;
	for(int i = 1; i < 10; i++) if(freq[i]) {
		mint t = fact[N-1];
		for(int j = 0; j < 10; j++) t *= ifac[freq[j] - (j == i)];
		ans += t;
	}
	cout << ans.val() << "\n";

}
0