Codeforces---Barnicle
来源:互联网 发布:如何撤销淘宝投诉 编辑:程序博客网 时间:2024/06/02 07:01
题目大意:将科学计数法化为普通的十进制数
输入的形式为 a.deb(0 ≤ a ≤ 9, 0 ≤ d < 10100, 0 ≤ b ≤ 100) ,输出无前导0,无后导0。
由于数字太大,所有用string来做。要考虑的情况好多,一定要理清楚思路。#include <iostream>#include <string>using namespace std;int main(){ string str1,str2,str3; int a,b,i,n,j,k,m;bool flag; while (cin>>str1) { i=n=0;flag=true; a=str1.find('e',i); b=str1.find('.',i); for(j=a+1; j<str1.size(); j++) n=n*10+(str1[j]-'0'); str2 = str1.substr(0,a); str2.erase(b,1); if(a-b-1>n) { string::iterator it1=str2.begin(); str2.insert(it1+b+n,'.'); } else { for(i=0; i<=n-(a-b); i++){ string::iterator it=str2.end(); str2.insert(it,'0'); } } i=j=0; b=str2.find('.',i); str3=str2.substr(0,b);if(b<0) { i=0; while(str2[i]=='0'){ j++; i++; } str2=str2.substr(j,str2.size()); }else{for(i=0; i<b; i++){if(str2[i]=='0')j++;if(str2[i]!='0'&&flag==true){k=i;flag=false;}}m=0;flag=true;for(i=str2.size()-1;i>b;i--){if(str2[i]!='0'&&flag==true){m=i;flag=false;}}if(m==0)str2.erase(b,str2.size());elsestr2.erase(m+1,str2.size());if(j==str3.size()){str2.erase(0,b);str2.insert(str2.begin(),'0');}elsestr2.erase(0,k);} cout<<str2<<endl; } return 0;}
要考虑的情况好多,一定要理清楚思路。
0 0
- Codeforces---Barnicle
- Codeforces-697B Barnicle
- Codeforces 697B Barnicle
- CodeForces 697B Barnicle
- Codeforces-697B Barnicle(模拟)
- Barnicle
- Barnicle
- Barnicle
- Codeforces Round #362 (Div. 2) B. Barnicle
- Codeforces-697B-Barnicle(模拟)
- Codeforces 697B. Barnicle(模拟)
- Codeforces Round 362 Div.2 B Barnicle
- CodeForces 697 B. Barnicle(简单模拟)
- codeforces 697B. Barnicle - 字符串变数字
- Codeforces Round #362 (Div. 2) B. Barnicle
- Codeforces Round #362 (Div. 2) B. Barnicle
- CodeForces - 697B Barnicle (高精度小数点)
- codeforces #362(div.2)B. Barnicle【模拟】
- 微信浏览器清除缓存的方法
- vector的常用方法
- redis实现分布式锁
- css元素的水平垂直居中的整理
- Md5加密算法
- Codeforces---Barnicle
- sqoop的--query工作中的实际的使用
- Jenkins+Maven+SVN自动部署配置文档
- Java Thread 多线程同步、锁、通信
- 神奇的JavaScript (2)
- 这不仅是一场驾照考试更是一种心理压力的考试
- 深入学习微框架:Spring Boot
- 如何生成SSH key
- 灾后重建