Submission #28135


ソースコード

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import java.util.*;
class Main {
static final long MOD = 1000000007;
static long calculate(int[] digits, int k) {
int n = digits.length;
// dp[i] ha [0, i) ketame miman de k wo hukumanai monono kosuu
long[] dp = new long[n + 1];
dp[0] = 0;
boolean kAppeared = false;
for (int i = 0; i < n; ++i) {
dp[i + 1] = (9 * dp[i]) % MOD;
if (!kAppeared) {
if (digits[i] > k) {
dp[i + 1] = (dp[i + 1] + digits[i] - 1) % MOD;
} else {
dp[i + 1] = (dp[i + 1] + digits[i]) % MOD;
}
}
if (digits[i] == k) {
kAppeared = true;
}
if (k == 0 && i >= 1) {
dp[i + 1] = (dp[i + 1] + 9) % MOD;
}
}
long a = 0;
for (int i = 0; i < n; ++i) {
a = (10 * a + digits[i]) % MOD;
}
return (a + MOD - dp[n]) % MOD;
}
static int[] toDigits(String number) {
int[] answer = new int[number.length()];
for (int i = 0; i < answer.length; ++i) {
answer[i] = (int) number.charAt(i) - 48;
}
return answer;
}
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String a = scan.next();
String b = scan.next();
int k = scan.nextInt();
int[] aDigits = toDigits(a);
int[] bDigits = toDigits(b);
// a wo 1 herasu
int position;
for (position = bDigits.length - 1; position >= 0; --position) {
bDigits[position] += 1;
if (bDigits[position] >= 10) {
bDigits[position] -= 10;
continue;
}
break;
}
if (position == -1 && bDigits[0] == 0) {
int[] newB = new int[bDigits.length + 1];
newB[0] = 1;
for (int i = 0; i < bDigits.length; ++i) {
newB[i + 1] = bDigits[i];
}
bDigits = newB;
}
long result = calculate(bDigits, k);
result = (result + MOD - calculate(aDigits, k)) % MOD;
System.out.println(result);
}
}

ステータス

項目 データ
問題 0565 - 桁
ユーザー名 KirikaYuumura
投稿日時 2017-10-28 17:37:08
言語 Java
状態 Accepted
得点 2
ソースコード長 1829 Byte
最大実行時間 106 ms
最大メモリ使用量 19920 KB

セット

セット 得点 Cases
1 SMALL 1 / 1 *small*
2 LARGE 1 / 1 *

テストケース

ファイル名 状態 実行時間 メモリ使用量 #
00.in AC 103 ms 19756 KB
2
00large.in AC 91 ms 19560 KB
2
00sample.in AC 73 ms 13716 KB
2
00small.in AC 67 ms 14684 KB
1
2
01.in AC 99 ms 18284 KB
2
01large.in AC 106 ms 16588 KB
2
01sample.in AC 64 ms 14540 KB
2
01small.in AC 91 ms 14816 KB
1
2
02.in AC 93 ms 19736 KB
2
02large.in AC 93 ms 16316 KB
2
02sample.in AC 67 ms 13280 KB
2
02small.in AC 73 ms 14616 KB
1
2
03.in AC 95 ms 18580 KB
2
03large.in AC 89 ms 16512 KB
2
03small.in AC 65 ms 13840 KB
1
2
04.in AC 96 ms 19056 KB
2
04large.in AC 91 ms 17060 KB
2
04small.in AC 80 ms 14552 KB
1
2
05.in AC 96 ms 19920 KB
2
05large.in AC 93 ms 16916 KB
2
05small.in AC 73 ms 14392 KB
1
2
06.in AC 100 ms 19060 KB
2
06large.in AC 91 ms 17724 KB
2
06small.in AC 69 ms 14920 KB
1
2
07.in AC 89 ms 19600 KB
2
07large.in AC 87 ms 16364 KB
2
07small.in AC 68 ms 14880 KB
1
2
08.in AC 93 ms 19896 KB
2
08large.in AC 86 ms 19548 KB
2
08small.in AC 72 ms 13352 KB
1
2
09.in AC 91 ms 18536 KB
2
09large.in AC 91 ms 17756 KB
2
09small.in AC 69 ms 13664 KB
1
2