1024. 科学计数法 (20)
来源:互联网 发布:公共网络摄像头直播 编辑:程序博客网 时间:2024/05/29 17:52
本题要求:
科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9]”.”[0-9]+E[+-][0-9]+,即数字的整数部分只有1位,小数部分至少有1位,该数字及其指数部分的正负号即使对正数也必定明确给出。
现以科学计数法的格式给出实数A,请编写程序按普通数字表示法输出A,并保证所有有效位都被保留。
输入格式:
每个输入包含1个测试用例,即一个以科学计数法表示的实数A。该数字的存储长度不超过9999字节,且其指数的绝对值不超过9999。
输出格式:
对每个测试用例,在一行中按普通数字表示法输出A,并保证所有有效位都被保留,包括末尾的0。
输入样例:
+1.23400E-03
输出样例:
0.00123400
解题思路 :
这道题要考虑如下四种情况:
1. 当指数为0时(solve_1)
2. 当指数为正数并且比小数部分的长度大或者等于时(solve_2)
3. 当指数为正数并且比小数部分的长度小时(solve_3)
4. 当指数为负数时(solve_4)
代码 :
#include <iostream>#include <string>using namespace std;string a;string b;string c;string d;int i = 1;int n = 0;int len;void solve_1() { cout << b << endl;}void solve_2() { i = 0; bool flag = true; n = n - len; while (b[i] != '\0') { if (flag && (b[i] == '0' || b[i] == '.')) { i++; continue; } flag = false; if (b[i] != '.') { cout << b[i]; } i++; } i = 0; while (i < n) { cout << '0'; i++; } cout << endl;}void solve_3() { i = 0; bool flag = true; while (b[i] != '\0') { if (flag && b[i] == '0') { i++; continue; } flag = false; if (i == n + 2) { cout << '.'; cout << b[i]; } else if (b[i] == '.') { cout << b[++i]; } else { cout << b[i]; } i++; }}void solve_4() { cout << "0."; n--; i = 0; while (i < n) { cout << '0'; i++; } i = 0; while (b[i] != '\0') { if (b[i] != '.') { cout << b[i]; } i++; } cout << endl;}int main() { cin >> a; bool isFuShu = false; if (a[0] == '-') { isFuShu = true; } i =1; while (a[i] != 'E') { b.push_back(a[i++]); } bool isZhengShu = false; i++; if (a[i] == '+') { isZhengShu = true; } i++; while (a[i] != '\0') { c.push_back(a[i++]); } int j = 0; while (c[j] != '\0') { n *= 10; n += c[j++] - '0'; } if (isFuShu) { cout << '-'; } if (n == 0) { solve_1(); return 0; } if (isZhengShu) { len = b.length() - 2; if (len <= n) { solve_2(); } else { solve_3(); } } else { solve_4(); } return 0;}
0 0
- 1024. 科学计数法 (20)
- 1024. 科学计数法 (20)
- 1024. 科学计数法 (20)
- 1024. 科学计数法 (20)
- 1024. 科学计数法 (20)
- 1024. 科学计数法 (20)
- 1024. 科学计数法 (20)
- 1024. 科学计数法 (20)
- 1024. 科学计数法 (20)
- 1024. 科学计数法 (20)
- 1024. 科学计数法 (20)
- 1024. 科学计数法 (20)
- 1024. 科学计数法 (20)
- 1024. 科学计数法 (20)
- 1024. 科学计数法 (20)
- 1024. 科学计数法 (20)
- 1024. 科学计数法 (20)
- 1024. 科学计数法 (20)
- IOS Intro
- JAVA WEB之jsp内置对象
- TensorBoard使用
- ORA-24323: value not allowed ORA-01089
- Unable to initialize any output collector(MapReduce执行到reduce过程失败抛出IO)
- 1024. 科学计数法 (20)
- 207. Course Schedule
- Linux系统 ISO下载
- spring cloud微服务框架 第一天
- VS2015 编译问题记录(更新)
- SpringMVC利用Column 注解约束double类型的精度
- 外部中断0电平触发
- 【Shiro】Apache Shiro架构之自定义realm
- cenos6 搭建 lnmp 手稿