zoj 2476 Total Amount
2012-02-22 20:54
405 查看
/* zoj_2476 字符串处理 简单的字符串处理,但有很多小问题需要注意,wa了数次才过。 注意点: 1.应该*100把小数点去掉,不要用double处理 2.结果小于10和100时的特判 3.不要在最前面输出',' 收获: 这题用double做时导致了各种错误。。double在比较的时候不能直接比较大小, 而要用eps控制。 */ #include <iostream> #include <cstdio> #include <cstdlib> #include <math.h> using namespace std; int count( string s ) { int i; int num=0,mul=100; num+=( 10*( s[s.size()-2]-'0' )+( s[s.size()-1]-'0' ) ) ; for( i=s.size()-4;i>=1;i-- ) { if( s[i]!=',' ) { num+=( mul*(s[i]-'0') ); mul*=10; } } return num; } void print( string s ) { int i,co=0; string re=""; if( s.size()==1 ) { re+=s[ s.size()-1 ]; re+="0.0"; } else if( s.size()==2 ) { re+=s[ s.size()-1 ]; re+=s[ s.size()-2 ]; re+=".0"; } else { re+=s[ s.size()-1 ]; re+=s[ s.size()-2 ]; re+='.'; for( i=s.size()-3;i>=0;i-- ) { re+=s[i]; co++; if( co%3==0 && i!=0 ) re+=','; } } re+='
; for( i=re.size()-1;i>=0;i-- ) cout<<re[i]; cout<<endl;}int main(){ int n,i,sum; string s; char temp[20]; while( cin>>n && n ) { sum=0; for( i=0;i<n;i++ ) { cin>>s; sum+=count(s); } sprintf( temp,"%d",sum ); s=""; s.append(temp); print( s ); } return 0;}
相关文章推荐
- zoj 2476 Total Amount(水~)
- zoj_2476 Total Amount
- zoj 2476 Total Amount
- zoj 2476 Total Amount
- ZOJ 2476 Total Amount 字符串
- ZOJ 2476 Total Amount 字符串
- zoj 2476 Total Amount(模拟题,细节处理特别多)
- ZOJ 2476 Total Amount
- ZOJ Problem Set - 2476 Total Amount
- B-Total Amount (ZOJ 2476)
- ZOJ 2476 Total Amount (字符串处理)
- ZOJ 2476 Total Amount
- ZOJ 2476 Total Amount
- zoj 2476 Total Amount
- zoj 2476 Total Amount
- Total Amount zoj 2476
- zoj 2476
- 【求助】zoj 2476求和水题
- ZOJ-2476
- zoj 3213 Beautiful Meadow