結果
| 問題 | 
                            No.1927 AB-CD
                             | 
                    
| コンテスト | |
| ユーザー | 
                             kokatsu
                         | 
                    
| 提出日時 | 2022-05-07 20:31:42 | 
| 言語 | D  (dmd 2.109.1)  | 
                    
| 結果 | 
                             
                                AC
                                 
                             
                            
                         | 
                    
| 実行時間 | 92 ms / 2,000 ms | 
| コード長 | 582 bytes | 
| コンパイル時間 | 1,967 ms | 
| コンパイル使用メモリ | 203,764 KB | 
| 実行使用メモリ | 6,944 KB | 
| 最終ジャッジ日時 | 2024-06-22 15:10:30 | 
| 合計ジャッジ時間 | 4,146 ms | 
| 
                            ジャッジサーバーID (参考情報)  | 
                        judge4 / judge1 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 3 | 
| other | AC * 27 | 
ソースコード
import std;
void main() {
    long N;
    readf("%d\n", N);
    auto S = readln.chomp;
    long M = 998_244_353;
    long cntAB = S.count!(s => (s == 'A' || s == 'B'));
    long res = 1;
    foreach (i; 0 .. cntAB) {
        res = (res * (N - i)) % M;
        res = (res * powMod(i+1, M-2, M)) % M;
    }
    res.writeln;
}
long powMod(long x, long y, long z) {
    long res = 1;
    while (y > 0) {
        if (y % 2 == 1) {
            res *= x;
            if (res > z) res %= z;
        }
        x *= x;
        if (x > z) x %= z;
        y /= 2;
    }
    return res;
}
            
            
            
        
            
kokatsu