結果

問題 No.1407 Kindness
ユーザー tonyu0
提出日時 2021-02-27 00:30:18
言語 Rust
(1.83.0 + proconio)
結果
WA  
実行時間 -
コード長 992 bytes
コンパイル時間 12,855 ms
コンパイル使用メモリ 385,756 KB
実行使用メモリ 14,592 KB
最終ジャッジ日時 2024-10-02 16:37:33
合計ジャッジ時間 15,018 ms
ジャッジサーバーID
(参考情報)
judge4 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other AC * 7 WA * 29
権限があれば一括ダウンロードができます

ソースコード

diff #

use std::io::*;
const MOD: usize = 1_000_000_007;

fn main() {
    let mut s: String = String::new();
    std::io::stdin().read_to_string(&mut s).ok();
    let s: Vec<usize> = s
        .trim()
        .chars()
        .map(|c| c.to_digit(10).unwrap() as usize)
        .collect();
    let n = s.len();
    let mut val = vec![vec![0; 10]; n];
    for i in 0..10 {
        val[0][i] = i;
    }
    for i in 0..n - 1 {
        for j in 0..10 {
            for k in 0..10 {
                val[i + 1][j] += val[i][k] * j;
                val[i + 1][j] %= MOD;
            }
        }
    }
    let mut ans = 0;
    let mut now = s[0];
    ans += val[n - 1][1];
    for i in 1..s[0] {
        ans = (ans + val[n - 1][i] * i) % MOD;
    }

    for i in 1..n {
        if i != n - 1 {
            ans += val[n - i - 1][1];
        }
        for j in 1..s[i] {
            ans = (ans + val[n - i - 1][j] * now) % MOD;
        }
        now = now * s[i] % MOD;
    }
    println!("{}", ans + now);
}
0