-
Notifications
You must be signed in to change notification settings - Fork 0
/
Jeff And Digits.cpp
139 lines (101 loc) · 2.42 KB
/
Jeff And Digits.cpp
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
Task: Jeff's got n cards, each card contains either digit 0, or digit 5. Jeff can choose several cards and put them in a line so that he gets some number. What is the largest possible number divisible by 90 Jeff can make from the cards he's got?
Jeff must make the number without leading zero. At that, we assume that number 0 doesn't contain any leading zeroes. Jeff doesn't have to use all the cards.
Input
The first line contains integer n (1 ≤ n ≤ 103). The next line contains n integers a1, a2, ..., an (ai = 0 or ai = 5). Number ai represents the digit that is written on the i-th card.
Output
In a single line print the answer to the problem — the maximum number, divisible by 90. If you can't make any divisible by 90 number from the cards, print -1.
Examples
Input
Copy
4
5 0 5 0
Output
Copy
0
Input
Copy
11
5 5 5 5 5 5 5 5 0 5 5
Output
Copy
5555555550
Note
In the first test you can make only one number that is a multiple of 90 — 0.
In the second test you can make number 5555555550, it is a multiple of 90.
Solution(1):
#include <bits/stdc++.h>
using namespace std;
int main(){
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
#endif
long long n,cnt0=0,cnt5=0;
cin >> n;
for (int i = 0; i < n; ++i) {
int a;
cin >> a;
if (a == 0) ++cnt0;
else ++cnt5;
}
if (cnt0 == 0) {
cout << "-1\n";
return 0;
}
if (cnt5 / 9 == 0) {
cout << "0\n";
return 0;
}
for (int i = 0; i < cnt5/9; ++i) cout << "555555555";
for (int i = 0; i < cnt0; ++i) cout << 0;
cout <<endl;
return 0;
}
Solution(2):
#include <bits/stdc++.h>
using namespace std;
int main(){
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
#endif
long long n,cntz=0,cntf=0,x=0,a,sum=0;
cin>>n;
for(long long i=0;i<n;i++){
cin>>a;
if(a==0){
cntz++;
}
else{
sum+=a;
cntf++;
}
}
if(cntz==0){
cout<<-1<<endl;
}
else{
for(int i=0;i<cntf;i++){
if(sum%9!=0){
sum-=5;
x++;
}
else{
break;
}
}
if(sum==0){
cout<<0<<endl;
}
else{
for(int i=0;i<(cntf-x);i++){
cout<<5;
}
for(int i=0;i<cntz;i++){
cout<<0;
}
cout<<endl;
}
}
return 0;
}