南阳acm 数字分隔(二)
来源:互联网 发布:auto.js 编辑:程序博客网 时间:2024/06/05 18:34
题目如下:
数字分隔(二)
时间限制:1000 ms | 内存限制:65535 KB
难度:3
- 描述
在一个遥远的国家,银行为了更快更好的处理用户的订单,决定将一整串的数字按照一定的规则分隔开来,分隔规则如下:
1、实数的整数部分按照每三个数字用逗号分隔开(整数部分的高位有多余的0时,需先将多余的0过滤后,再进行数字分隔,如:0001234567 输出结果为1,234,567.00)
2、小数部分保留两位小数(四舍五入)
3、如果该数是负的,则在输出时需用括号将分隔后的数字括起来,例如:-10005.1645的输出结果为(10,005.16)
- 输入
- 多组测试数据,每行输入一个实数n(n的位数小于100)
- 输出
- 输出分隔后的结果
- 样例输入
00012345670.0000
-10005.1645
- 样例输出
1,234,567.000.00
(10,005.16)
本题需要考虑99.999;.3546;-0;35456.等特殊情况,具体解释见代码。
代码如下:
#include<iostream>using namespace std;string str;int main(){ int l,lose,last,first,remainder,aunt,i; while(cin>>str) { string s="0"; lose=0;i=0; if(str[0]=='-') {lose=1;str[0]='0';} //lose记录最后输出有无(); else { s+=str; str=s; } l=str.length(); last=l; //last先定义为字符串长度,以防没有小数点。 for(i=0;i<l;i++) { if(str[i]=='.') {last=i;break;} } if(l-last>3&&str[last+3]>52) //若小数点后多余2位,对字符串进行“四舍五入”。 { int more=1; int num; for(int j=last+2;j>=0;j--) { if(j==last) continue; num=str[j]-48; num+=more; more=num/10; num=num%10; str[j]=num+48; if(more==0) break; } } for(i=0;i<=last;i++) //记录第一个不为‘0’的位置。 { if(str[i]!='0') {first=i;break;} } remainder=(last-first)%3; if(lose) cout<<"("; if(last==first) cout<<'0'; //考虑“.2342”等情况。 if(last-first<=3) //将整数部分输出。 { for(i=first;i<last;i++) cout<<str[i]; } else { aunt=1; if(!remainder) remainder=3; //如果remainder为0,则每三个输出。 for(i=first;i<remainder+first;i++) { cout<<str[i]; } cout<<","; for(i;i<last-3;i++) { cout<<str[i]; if(aunt==3) cout<<","; aunt++; if(aunt==4) aunt=1; } for(i;i<last;i++) cout<<str[i]; } cout<<"."; if(l-last>=3) //输出小数部分。 cout<<str[last+1]<<str[last+2]; else if(l-last==2) cout<<str[last+1]<<'0'; else cout<<"00"; if(lose) cout<<')'; cout<<endl; } return 0;}
0 0
- 南阳acm 数字分隔(二)
- 南阳oj 1092 数字分隔(二)
- 南阳1092-数字分隔(二)
- 南阳OJ 数字分隔(二)
- 数字分隔(二)
- 数字分隔(二)
- 数字分隔(二)
- 数字分隔(二)
- 数字分隔(二)
- 数字分隔(二)
- NYOJ1092 数字分隔(二)
- 68.数字分隔(二)
- nyoj1092数字分隔(二)
- 南阳ACM-喷水装置(二)
- NYOJ1092数字分隔(二)(水水)
- NYOJ 1092-数字分隔(二)-sdfgdbvc
- NYOJ 1092 数字分隔(二)
- 【NYOJ】[1092]数字分隔(二)
- CLH锁与MCS锁的比较
- 关于IDFA的使用和报错
- 51nod--Huffman编码
- Failed to execute runnable (org.eclipse.swt.SWTException: Widget is disposed)原因以及解决办法
- 《数据结构》双向链表的创建
- 南阳acm 数字分隔(二)
- spring mvc前端验证代码生成器
- Android常见开源框架总结
- php cookie 和 cookie跨域访问
- Android代码混淆
- Android逆向分析(一) - 反编译看看手Q口令红包的实现原理
- Facebook工程师是如何改进他们Android客户端的
- JFinal学习--03Interceptor
- iOS开发:正确使用const,static,extern