結果
問題 | No.1407 Kindness |
ユーザー | ks2m |
提出日時 | 2021-02-26 23:07:22 |
言語 | Java (openjdk 23) |
結果 |
AC
|
実行時間 | 216 ms / 2,000 ms |
コード長 | 642 bytes |
コンパイル時間 | 4,497 ms |
コンパイル使用メモリ | 83,468 KB |
実行使用メモリ | 56,384 KB |
最終ジャッジ日時 | 2024-10-02 15:58:59 |
合計ジャッジ時間 | 9,594 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 36 |
ソースコード
import java.util.Scanner; public class Main { public static void main(String[] args) throws Exception { Scanner sc = new Scanner(System.in); char[] s = sc.next().toCharArray(); sc.close(); int n = s.length; int mod = 1000000007; long[] dp0 = new long[n + 1]; long[] dp1 = new long[n + 1]; dp0[0] = 1; for (int i = 0; i < n; i++) { int d = s[i] - '0'; dp1[i + 1] += dp1[i] * 45; if (i > 0) { dp1[i + 1] += 45; } if (d > 0) { dp1[i + 1] += dp0[i] * (d - 1) * d / 2; dp0[i + 1] = dp0[i] * d; } dp1[i + 1] %= mod; dp0[i + 1] %= mod; } System.out.println((dp1[n] + dp0[n]) % mod); } }