Vasily exited from a store and now he wants to recheck the total price of all purchases in his bill. The bill is a string in which the names of the purchases and their prices are printed in a row without any spaces. Check has the format "name1price1name2price2...namenpricen", where namei (name of the i-th purchase) is a non-empty string of length not more than 10, consisting of lowercase English letters, and pricei(the price of the i-th purchase) is a non-empty string, consisting of digits and dots (decimal points). It is possible that purchases with equal names have different prices.

The price of each purchase is written in the following format. If the price is an integer number of dollars then cents are not written.

Otherwise, after the number of dollars a dot (decimal point) is written followed by cents in a two-digit format (if number of cents is between 1and 9 inclusively, there is a leading zero).

Also, every three digits (from less significant to the most) in dollars are separated by dot (decimal point). No extra leading zeroes are allowed. The price always starts with a digit and ends with a digit.

For example:

  • "234", "1.544", "149.431.10", "0.99" and "123.05" are valid prices,
  • ".333", "3.33.11", "12.00", ".33", "0.1234" and "1.2" are not valid.

Write a program that will find the total price of all purchases in the given bill.

Input

The only line of the input contains a non-empty string s with length not greater than 1000 — the content of the bill.

It is guaranteed that the bill meets the format described above. It is guaranteed that each price in the bill is not less than one cent and not greater than 106 dollars.

Output

Print the total price exactly in the same format as prices given in the input.

Examples
input
chipsy48.32televizor12.390
output
12.438.32
input
a1b2c3.38
output
6.38
input
aa0.01t0.03
output
0.04

题意:给出价格,不过价格表示不太一样,如果是小数点后面是3个数字,只是数字分割符号,比如12,345 表示12345,当然是两个以下说明是小数点,求所有的价格总和,并按照题意表示方式输出
解法:
1 主要在于如何把数字转化成常规数字。我用a表示整数,b表示小数
2 前面的数字自然是整数,中间出现的数字判断是不是长度为3,后面的数字也同样判断一下,然后放入a和b内
3 再判断b是不是有进位
4 按照题目意思输出,大概就是小数是1~2位。整数位是3位,判断一下
5 代码好长。。其实重复部分很多
#include<bits/stdc++.h>
using namespace std;
long long a,b;
int main(){
string s;
cin>>s;
int len=s.length();
int i=;
while(i<len){
if(s[i]>='a'&&s[i]<='z'){
i++;
}
if(s[i]>=''&&s[i]<=''){
int f=;
long long ans=;
long long pos=;
long long num=;
while(s[i]>=''&&s[i]<=''){
pos*=;
pos+=(s[i]-'');
i++;
}
if(s[i]=='.'){
f++;
i++;
int x=;
while(s[i]>=''&&s[i]<=''){
ans*=;
ans+=(s[i]-'');
i++;
x*=;
}
if(x>=){
pos*=x;
pos+=(ans);
}else{
b+=ans;
// cout<<b<<"A"<<endl;
// cout<<"A"<<endl;
}
}
if(s[i]=='.'&&f==){
i++;
long long x=;
while(s[i]>=''&&s[i]<=''){
num*=;
num+=(s[i]-'');
i++;
x*=;
}
if(x>=){
pos*=x;
pos+=num;
}else{
b+=num;
}
}else{
i++;
}
// cout<<pos<<" "<<b<<endl;
a+=pos;
}
} a+=(b/);
b%=;
//cout<<a<<" "<<b<<endl;
string ss="";
if(a==&&b==){
cout<<"0.0"<<endl;
return ;
}
if(a==&&b){
if(b<){
cout<<"0.0"<<b<<endl;
}else{
string ls="";
while(b){
long long dns=b%;
ls+=(dns+'');
b/=;
}
reverse(ls.begin(),ls.end());
cout<<"0."<<ls<<endl;
}
return ;
}
if(a&&b==){
int los=;
while(a){
long long dns=a%;
if(los%==&&los){
ss+='.';
}
ss+=(dns+'');
a/=;
los++;
}
int ll=ss.length();
reverse(ss.begin(),ss.end());
cout<<ss<<endl;
}else{
int los=;
while(a){
long long dns=a%;
if(los%==&&los){
ss+='.';
}
ss+=(dns+'');
a/=;
los++;
}
int ll=ss.length();
reverse(ss.begin(),ss.end());
if(b<){
cout<<ss<<".0"<<b<<endl;
}else{
string ls="";
while(b){
long long dns=b%;
ls+=(dns+'');
b/=;
}
reverse(ls.begin(),ls.end());
cout<<ss<<"."<<ls<<endl;
}
}
return ;
}

Technocup 2017 - Elimination Round 1 (Unofficially Open for Everyone, Rated for Div. 2) B的更多相关文章

  1. Technocup 2017 - Elimination Round 1 (Unofficially Open for Everyone, Rated for Div. 2) D

    The organizers of a programming contest have decided to present t-shirts to participants. There are ...

  2. Technocup 2017 - Elimination Round 1 (Unofficially Open for Everyone, Rated for Div. 2) C

    This is an interactive problem. You should use flush operation after each printed line. For example, ...

  3. Technocup 2017 - Elimination Round 1 (Unofficially Open for Everyone, Rated for Div. 2) A

    Vasily has a number a, which he wants to turn into a number b. For this purpose, he can do two types ...

  4. Codeforces Round #389 (Div. 2, Rated, Based on Technocup 2017 - Elimination Round 3) C

    Description Santa Claus has Robot which lives on the infinite grid and can move along its lines. He ...

  5. Codeforces Round #389 (Div. 2, Rated, Based on Technocup 2017 - Elimination Round 3) B

    Description Santa Claus decided to disassemble his keyboard to clean it. After he returned all the k ...

  6. Codeforces Round #389 (Div. 2, Rated, Based on Technocup 2017 - Elimination Round 3) A

    Description Santa Claus is the first who came to the Christmas Olympiad, and he is going to be the f ...

  7. Codeforces Round #389 (Div. 2, Rated, Based on Technocup 2017 - Elimination Round 3) D. Santa Claus and a Palindrome STL

    D. Santa Claus and a Palindrome time limit per test 2 seconds memory limit per test 256 megabytes in ...

  8. Codeforces Round #389 (Div. 2, Rated, Based on Technocup 2017 - Elimination Round 3) E. Santa Claus and Tangerines

    E. Santa Claus and Tangerines time limit per test 2 seconds memory limit per test 256 megabytes inpu ...

  9. Codeforces Round #380 (Div. 1, Rated, Based on Technocup 2017 - Elimination Round 2)

    http://codeforces.com/contest/737 A: 题目大意: 有n辆车,每辆车有一个价钱ci和油箱容量vi.在x轴上,起点为0,终点为s,中途有k个加油站,坐标分别是pi,到每 ...

随机推荐

  1. Codeforces696 Round #362 (Div. 1)(vp) A~D题解

    很久没有打比赛了,内部模拟赛天天垫底,第一次vp之旅又是和**一样,这样下去GDOI之后直接退役算了 整场都在忘开LL A. Lorenzo Von Matterhorn 这个题一看我就想直接虚树+树 ...

  2. Codeforces Round #401 (Div. 2) D Cloud of Hashtags —— 字符串

    题目链接:http://codeforces.com/contest/777/problem/D 题解: 题意:给出n行字符串,对其进行字典序剪辑.我自己的想法是正向剪辑的,即先对第一第二个字符串进行 ...

  3. 基于BASYS2的VHDL程序——交通灯

    请尊重作者版权,转载请注明原地址: http://www.cnblogs.com/connorzx/p/3676746.html 数电实验交通灯VHDL版,程序写的扩展性很差,待以后有时间进行优化. ...

  4. zoj 2316 Matrix Multiplication 解题报告

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2316 题目意思:有 N 个 点,M 条 边.需要构造一个N * ...

  5. Rsync+Sersync同步

    Rsync+Sersync同步特点: (1):sersync可以记录下被监听目录中发生变化的(包括增加.删除.修改)具体某一个文件或某一个目录的名字:(2):rsync在同步的时候,只同步发生变化的这 ...

  6. iptables 端口映射

    一.环境和要实现功能 PC1的网络设置如下: eth0       192.168.0.29 内网 eth1 219.239.11.22 外网 PC2的网络设置则为:192.168.0.21 内网 我 ...

  7. Asterisk func group

    Synopsis Gets, sets or clears the channel group. Each channel can only be member of exactly one grou ...

  8. pycharm 开发连接linux 服务器

    这样就可以了.....

  9. BZOJ_2216_[Poi2011]Lightning Conductor_决策单调性

    BZOJ_2216_[Poi2011]Lightning Conductor_决策单调性 Description 已知一个长度为n的序列a1,a2,...,an. 对于每个1<=i<=n, ...

  10. ADB命令小结

    )adb devices //查看启动的所有设备 )adb kill-server //重启设备 )adb start-server //启动设备 )adb -s emulator-(通过 adb d ...