結果
| 問題 | No.1407 Kindness | 
| コンテスト | |
| ユーザー |  akakimidori | 
| 提出日時 | 2021-02-20 02:27:04 | 
| 言語 | Rust (1.83.0 + proconio) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 4 ms / 2,000 ms | 
| コード長 | 584 bytes | 
| コンパイル時間 | 12,179 ms | 
| コンパイル使用メモリ | 378,216 KB | 
| 実行使用メモリ | 5,376 KB | 
| 最終ジャッジ日時 | 2024-09-17 05:36:23 | 
| 合計ジャッジ時間 | 13,805 ms | 
| ジャッジサーバーID (参考情報) | judge5 / judge1 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 2 | 
| other | AC * 36 | 
ソースコード
fn read() -> Vec<u64> {
    let mut s = String::new();
    std::io::stdin().read_line(&mut s).unwrap();
    s.trim().bytes().map(|c| (c - b'0') as u64).collect::<Vec<_>>()
}
fn main() {
    let s = read();
    const MOD: u64 = 1_000_000_007;
    let mut sup = 1;
    let mut dp = 0;
    for (i, &c) in s.iter().enumerate() {
        dp = 45 * dp % MOD;
        for i in 1..c {
            dp = (dp + i * sup) % MOD;
        }
        if i > 0 {
            dp = (dp + 45) % MOD;
        }
        sup = sup * c % MOD;
    }
    let ans = (dp + sup) % MOD;
    println!("{}", ans);
}
            
            
            
        