Submission #00165
ソースコード
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 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 | #include <bits/stdc++.h> using namespace std; #define REP(i,n) for (int i=0;i<(n);i++) #define REP2(i,m,n) for (int i=m;i<(n);i++) typedef long long ll; ll MOD = 1000000007; pair<ll, ll> A[101010]; ll F[101010]; ll cnt[10]; ll powmod(ll a, ll x, ll m) { ll ret = 1; while (x) { if (x % 2) ret = ret * a % m; a = a * a % m; x /= 2; } return ret; } int main() { int N; cin >> N; REP(i, N) { ll a, b; cin >> a >> b; A[i] = make_pair(a, b); } F[0] = F[1] = 1; REP2(i, 1, 101000) F[i+1] = F[i] * (i+1) % MOD; bool only_zero = true ; REP(i, N) if (A[i].first != 0) only_zero = false ; if (only_zero) { cout << 0 << endl; cout << F[N] << endl; return 0; } sort(A, A+N); ll fst = 0; ll f, s; REP(i, N) { if (A[i].first == 0) continue ; f = A[i].first; s = A[i].second; int j; for (j = i; j < N && A[j].first == f && A[j].second == s; j++); fst = j - i; break ; } ll ans = fst; REP(i, 10) cnt[i] = 0; REP(i, N) if (A[i].first != f || A[i].second != s) cnt[A[i].first]++; if (cnt[0] == 0) { REP(i, 10) cnt[i] = 0; REP(i, N) cnt[A[i].first]++; ans = 1; REP(i, 10) ans = ans * F[cnt[i]] % MOD; ll ans2 = 0; ll inv9 = powmod(9, MOD-2, MOD); REP(i, N) { ans2 = ans2 * powmod(10, A[i].second, MOD) % MOD; (ans2 += (powmod(10, A[i].second, MOD) - 1) * inv9 % MOD * A[i].first % MOD) %= MOD; ans2 = (ans2 + MOD) % MOD; } cout << ans2 << endl << ans << endl; return 0; } REP(i, 10) ans = ans * F[cnt[i]] % MOD; ll ans2 = 0; ll inv9 = powmod(9, MOD-2, MOD); ll keta = 0; bool flag = false ; keta += s; ans2 = (powmod(10, s, MOD) - 1) * inv9 % MOD * f % MOD; ans2 = (ans2 + MOD) % MOD; REP(i, N) { if (A[i].first == f && A[i].second == s && !flag) { flag = true ; continue ; } ans2 = ans2 * powmod(10, A[i].second, MOD) % MOD; (ans2 += (powmod(10, A[i].second, MOD) - 1) * inv9 % MOD * A[i].first % MOD) %= MOD; ans2 = (ans2 + MOD) % MOD; } cout << ans2 << endl << ans << endl; } |
ステータス
項目 | データ |
---|---|
問題 | 0003 - repdigit |
ユーザー名 | nebukuro09 |
投稿日時 | 2017-07-07 21:35:15 |
言語 | C++17 |
状態 | Wrong Answer |
得点 | 0 |
ソースコード長 | 2407 Byte |
最大実行時間 | 160 ms |
最大メモリ使用量 | 3080 KB |
セット
セット | 得点 | Cases | |
---|---|---|---|
1 | ALL | 0 / 100 | * |
テストケース
ファイル名 | 状態 | 実行時間 | メモリ使用量 | # |
---|---|---|---|---|
01_sample1.in | AC | 13 ms | 1244 KB |
1
|
01_sample2.in | AC | 14 ms | 1328 KB |
1
|
01_sample3.in | AC | 12 ms | 1280 KB |
1
|
02_handmake1.in | AC | 16 ms | 1360 KB |
1
|
02_handmake2.in | WA | 15 ms | 1184 KB |
1
|
02_handmake3.in | AC | 17 ms | 1388 KB |
1
|
02_handmake4.in | AC | 23 ms | 1340 KB |
1
|
02_handmake5.in | AC | 12 ms | 1164 KB |
1
|
02_handmake6.in | AC | 15 ms | 1244 KB |
1
|
02_handmake7.in | AC | 18 ms | 1324 KB |
1
|
02_handmake8.in | AC | 14 ms | 1268 KB |
1
|
02_handmake9.in | AC | 14 ms | 1216 KB |
1
|
03_random1.in | WA | 13 ms | 1292 KB |
1
|
03_random2.in | WA | 13 ms | 1248 KB |
1
|
03_random3.in | WA | 15 ms | 1324 KB |
1
|
03_random4.in | AC | 15 ms | 1396 KB |
1
|
03_random5.in | AC | 19 ms | 1476 KB |
1
|
03_random6.in | AC | 16 ms | 1424 KB |
1
|
04_random1.in | AC | 14 ms | 1372 KB |
1
|
04_random2.in | AC | 15 ms | 1320 KB |
1
|
04_random3.in | AC | 14 ms | 1396 KB |
1
|
04_random4.in | AC | 13 ms | 1344 KB |
1
|
04_random5.in | AC | 18 ms | 1420 KB |
1
|
04_random6.in | AC | 16 ms | 1376 KB |
1
|
05_random1.in | AC | 150 ms | 2864 KB |
1
|
05_random2.in | AC | 156 ms | 2920 KB |
1
|
05_random3.in | AC | 160 ms | 2976 KB |
1
|
05_random4.in | AC | 151 ms | 3024 KB |
1
|
06_random1.in | AC | 145 ms | 3080 KB |
1
|
06_random3.in | AC | 148 ms | 2880 KB |
1
|