Submission #00269


ソースコード

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
101
102
103
104
105
106
107
108
#include<map>
#include<set>
#include<list>
#include<cmath>
#include<queue>
#include<stack>
#include<cstdio>
#include<string>
#include<vector>
#include<complex>
#include<cstdlib>
#include<cstring>
#include<numeric>
#include<sstream>
#include<iostream>
#include<algorithm>
#include<functional>
#define mp make_pair
#define pb push_back
#define all(x) (x).begin(),(x).end()
#define YES() printf("YES\n")
#define NO() printf("NO\n")
using namespace std;
#define int long long
//typedef long long ll;
typedef unsigned long long ull;
typedef vector<bool> vb;
typedef vector<int> vi;
typedef vector<vb> vvb;
typedef vector<vi> vvi;
typedef pair<int,int> P;
const int INF=1e+10;
const double EPS=1e-9;
const int MOD=1000000007;
const int dx[]={1,0,-1,0},dy[]={0,-1,0,1};
int power(int x,int y){
if(y == 0) return 1;
int res = power(x * x % MOD,y / 2);
if(y & 1) res = res * x % MOD;
return res;
}
int mod_inv(int X){
int a = X, b = MOD, u = 1, v = 0;
while(b) {
int t = a / b;
a -= t * b; swap(a, b);
u -= t * v; swap(u, v);
}
if(u < 0) u += MOD;
return u;
}
int cost = 0;
void calc(int a,int b){
cost = cost * power(10,b) % MOD;
int tmp = (power(10,b) % MOD + MOD - 1) * a % MOD * mod_inv(9) % MOD;
cost = (cost + tmp) % MOD;
}
signed main(){
int n,a[100000],b[100000],mia = 11,mib = INF,ans = 1,fact[100010] = {1,1};
bool zero = false;
int app[10] = {},cnt[10] = {},same = 1;
cin >> n;
for(int i = 2;i < 100010;i++) fact[i] = fact[i - 1] * i % MOD;
for(int i = 0;i < n;i++) {
cin >> a[i] >> b[i];
if(a[i] == 0) zero = true;
if(mia >= a[i] && a[i]){
mia = a[i];
if(mib > b[i]) {
mib = b[i];
same = 1;
}
else if(mib == b[i]) same++;
}
}
if(n == 1 && a[0] == 0){
cout << 0 << endl << 1 << endl;
return 0;
}
calc(mia,mib);
bool flag = false;
vector<P> vec;
for(int i = 0;i < n;i++){
if(!flag && mia == a[i] && mib == b[i]) flag = true;
else {
app[a[i]]++;
cnt[a[i]] += b[i];
}
}
if(!zero) app[mia]++;
else ans = ans * same % MOD;
for(int i = 0;i < 10;i++){
if(cnt[i]) calc(i,cnt[i]);
ans = ans * fact[app[i]] % MOD;
}
cout << cost << endl << ans << endl;
return 0;
}

ステータス

項目 データ
問題 0003 - repdigit
ユーザー名 Hoget157
投稿日時 2017-07-07 22:18:21
言語 C++11
状態 Wrong Answer
得点 0
ソースコード長 2342 Byte
最大実行時間 56 ms
最大メモリ使用量 3024 KB

セット

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

テストケース

ファイル名 状態 実行時間 メモリ使用量 #
01_sample1.in AC 13 ms 1248 KB
1
01_sample2.in AC 13 ms 1464 KB
1
01_sample3.in AC 15 ms 1284 KB
1
02_handmake1.in AC 15 ms 1372 KB
1
02_handmake2.in AC 13 ms 1336 KB
1
02_handmake3.in AC 12 ms 1300 KB
1
02_handmake4.in AC 11 ms 1388 KB
1
02_handmake5.in AC 11 ms 2880 KB
1
02_handmake6.in AC 11 ms 1352 KB
1
02_handmake7.in AC 13 ms 1312 KB
1
02_handmake8.in AC 19 ms 1272 KB
1
02_handmake9.in AC 14 ms 1360 KB
1
03_random1.in WA 13 ms 1320 KB
1
03_random2.in WA 17 ms 2684 KB
1
03_random3.in WA 14 ms 1364 KB
1
03_random4.in AC 13 ms 1324 KB
1
03_random5.in AC 14 ms 1412 KB
1
03_random6.in AC 11 ms 1368 KB
1
04_random1.in AC 12 ms 1456 KB
1
04_random2.in AC 12 ms 1416 KB
1
04_random3.in AC 14 ms 1252 KB
1
04_random4.in AC 14 ms 1344 KB
1
04_random5.in WA 13 ms 1300 KB
1
04_random6.in AC 11 ms 1384 KB
1
05_random1.in AC 49 ms 2880 KB
1
05_random2.in AC 56 ms 2820 KB
1
05_random3.in AC 53 ms 3016 KB
1
05_random4.in AC 54 ms 2956 KB
1
06_random1.in AC 47 ms 3024 KB
1
06_random3.in AC 51 ms 2960 KB
1