Submission #00111


ソースコード

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
#include <algorithm>
#include <climits>
#include <iostream>
#include <random>
#include <string>
#include <utility>
#include <vector>
using namespace std;
#define rep(i, N) for (int i = 0; i < N; i++)
#define pb push_back
typedef long long ll;
int INF = INT_MAX / 2;
const int MOD = 1e9 + 7;
int pow_mod(ll x, ll n, int M) {
ll ans = 1;
for (; n; n >>= 1) {
if (n & 1) ans = ans * x % M;
x = x * x % M;
}
return ans;
}
int inv_mod(int x, int p) {
return pow_mod(x, p - 2, p);
}
ll a[] = { 1, 682498929,491101308,76479948,723816384,67347853,27368307,625544428,199888908,888050723,927880474,281863274,661224977,623534362,970055531,261384175,195888993,66404266,547665832,109838563,933245637,724691727,368925948,268838846,136026497,112390913,135498044,217544623,419363534,500780548,668123525,128487469,30977140,522049725,309058615,386027524,189239124,148528617,940567523,917084264,429277690,996164327,358655417,568392357,780072518,462639908,275105629,909210595,99199382,703397904,733333339,97830135,608823837,256141983,141827977,696628828,637939935,811575797,848924691,131772368,724464507,272814771,326159309,456152084,903466878,92255682,769795511,373745190,606241871,825871994,957939114,435887178,852304035,663307737,375297772,217598709,624148346,671734977,624500515,748510389,203191898,423951674,629786193,672850561,814362881,823845496,116667533,256473217,627655552,245795606,586445753,172114298,193781724,778983779,83868974,315103615,965785236,492741665,377329025,847549272,698611116,698611116 };
ll f(ll x) {
if (x >= 1000000007) return 0;
ll ans = a[x / 10000000];
for (int y = x / 10000000 * 10000000 + 1; y <= x; y++)
ans = ans * y % MOD;
return ans;
}
int main() {
int N; cin >> N;
vector<int> d(N), l(N);
rep(i, N) scanf("%d%d", &d[i], &l[i]);
int d0 = 10;
rep(i, N) if (d[i]) d0 = min(d0, d[i]);
int l0 = INF;
rep(i, N) if (d[i] == d0) l0 = min(l0, l[i]);
vector<int> num(10), sum(10);
rep(i, N) num[d[i]]++, sum[d[i]] += l[i];
if (d0 != 10) num[d0]--, sum[d0] -= l0;
ll ans = 0;
if (d0 != 10) ans = (ll)(pow_mod(10, l0, MOD) - 1) * inv_mod(9, MOD) % MOD * d0 % MOD;
rep(d, 10) {
ans = ans * pow_mod(10, sum[d], MOD) % MOD;
ans = (ans + (ll)(pow_mod(10, sum[d], MOD) - 1) * inv_mod(9, MOD) % MOD * d) % MOD;
}
ll way = 1;
rep(d, 10) way = way * f(num[d]) % MOD;
cout << ans << endl;
cout << way << endl;
}

ステータス

項目 データ
問題 0003 - repdigit
ユーザー名 sugim48
投稿日時 2017-07-07 21:10:30
言語 C++17
状態 Wrong Answer
得点 0
ソースコード長 2416 Byte
最大実行時間 1000 ms
最大メモリ使用量 1428 KB

セット

セット 得点 Cases
1 ALL 0 / 100 *

テストケース

ファイル名 状態 実行時間 メモリ使用量 #
01_sample1.in AC 13 ms 480 KB
1
01_sample2.in AC 10 ms 452 KB
1
01_sample3.in AC 17 ms 556 KB
1
02_handmake1.in AC 10 ms 536 KB
1
02_handmake2.in WA 10 ms 632 KB
1
02_handmake3.in AC 15 ms 604 KB
1
02_handmake4.in AC 12 ms 580 KB
1
02_handmake5.in AC 12 ms 556 KB
1
02_handmake6.in AC 14 ms 532 KB
1
02_handmake7.in AC 12 ms 632 KB
1
02_handmake8.in WA 12 ms 608 KB
1
02_handmake9.in AC 17 ms 588 KB
1
03_random1.in WA 15 ms 560 KB
1
03_random2.in WA 13 ms 540 KB
1
03_random3.in WA 12 ms 520 KB
1
03_random4.in WA 14 ms 624 KB
1
03_random5.in WA 24 ms 596 KB
1
03_random6.in WA 13 ms 568 KB
1
04_random1.in AC 11 ms 540 KB
1
04_random2.in AC 12 ms 520 KB
1
04_random3.in AC 14 ms 496 KB
1
04_random4.in WA 15 ms 472 KB
1
04_random5.in WA 12 ms 576 KB
1
04_random6.in WA 10 ms 684 KB
1
05_random1.in TLE 1000 ms 1428 KB
1
05_random2.in TLE 1000 ms 1396 KB
1
05_random3.in TLE 1000 ms 1356 KB
1
05_random4.in TLE 1000 ms 1312 KB
1
06_random1.in TLE 1000 ms 1400 KB
1
06_random3.in WA 24 ms 1360 KB
1