bill total value – codeforce 727b

Problem

Here.

Code in C++

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
#include <vector>
#include <string>
using namespace std;
const double epsilon = 0.00001;
int (int x) {
if (x == 0) return 1;
int n = 0;
while (x > 0) {
n ++;
x = x / 10;
}
return n;
}
vector<int> v;
vector<int> w;
double solve() {
if (v.size() == 1)
return v[0];
double tmp = 0.0;
for (int i = 0; i < v.size()-1; i++)
tmp = tmp*1000 + v[i];
//cout << v[v.size()-1] << endl;
//cout << f(32) << endl;
//cout << w[v.size()-1] << endl;
if (w[v.size()-1] <= 2) {
//cout << "----> " << v[v.size()-1] << endl;
tmp += 0.01 * v[v.size()-1];
}
else tmp = tmp * 1000 + v[v.size()-1];
//cout << "return " << tmp << endl;
return tmp;
}
void out(double sum) {
vector<int> v;
int zhengshu = (int)sum;
//cout << (sum-zhengshu)*100 + epsilon << endl;
int xiaoshu = ((sum - zhengshu)*100) + epsilon;
//cout << "xs : " << xiaoshu << endl;
//cout << zhengshu << endl;
if (zhengshu == 0)
v.push_back(0);
while (zhengshu > 0){
v.push_back(zhengshu % 1000);
zhengshu = zhengshu / 1000;
}
cout << v[v.size()-1];
for (int i = v.size()-2; i >=0; i--){
cout << ".";
if (f(v[i]) == 1) cout << "00";
else if (f(v[i]) == 2) cout << "0";
cout << v[i];
}
if (xiaoshu == 0)
cout << endl;
else {
cout << '.';
if (f(xiaoshu) == 1) cout << '0';
cout << xiaoshu << endl;
}
}
int main() {
string s;
cin >> s;
int len = s.length();
int num = 0;
double sum = 0.00;
int len_num = 0;
for (int i = 0; i < len; i++) {
if ('0' <= s[i] && s[i] <= '9') {
num = num * 10 + (s[i]-'0');
len_num++;
}
if (s[i] == '.') {
v.push_back(num);
w.push_back(len_num);
num = 0; len_num = 0;
}
if ('a' <= s[i] && s[i] <= 'z') {
v.push_back(num);
w.push_back(len_num);
sum += solve();
num = 0; len_num = 0;
v.clear(); w.clear();
}
}
v.push_back(num);
w.push_back(len_num);
sum += solve();
out(sum);
//printf("%.2fn", sum);
return 0;
}