PAT算法笔记(十四)————科学计数法
2017-03-06 20:39
309 查看
题目描述
科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9]"."[0-9]+E[+-][0-9]+,即数字的整数部分 只有1位,小数部分至少有1位,该数字及其指数部分的正负号即使对正数也必定明确给出。 现以科学计数法的格式给出实数A,请编写程序按普通数字表示法输出A,并保证所有有效位都被保留。
输入描述:
每个输入包含1个测试用例,即一个以科学计数法表示的实数A。该数字的存储长度不超过9999字节,且其指数的绝对值不超过9999。
输出描述:
对每个测试用例,在一行中按普通数字表示法输出A,并保证所有有效位都被保留,包括末尾的0。
输入例子:
+1.23400E-03
输出例子:
0.00123400
代码:
#include"iostream" #include "string" #include "cmath" #include "vector" using namespace std; int main() { string Input; cin >> Input; vector<char> temp; int i = 3; while (Input[i] != 'E') { temp.push_back(Input[i]); i++; } int bits = i - 3; char indexSigned = Input[i + 1]; int num2 = 0; for (int k = i + 2; k <= Input.size() - 1; k++) { num2 = num2 * 10 + (Input[k] - '0'); } if (Input[0] == '-') cout << '-'; if (indexSigned == '+') { cout << Input[1]; for (int ff = 0; ff < (num2 < bits?num2:bits); ff++) cout << temp[ff]; if (num2 < bits) { cout << '.'; for (int i = num2; i < bits; i++) cout << temp[i]; } else { for (int i = 0; i < num2 - bits; i++) cout << '0'; } } else { cout << "0."; for (int i = 0; i < num2 - 1; i++) cout << '0'; cout << Input[1]; for (int i = 0; i < temp.size(); i++) cout << temp[i]; } }
重点:
无
相关文章推荐
- PAT算法笔记(九)————程序运行时间
- PAT算法笔记(四) ————锤子剪刀布
- 机器学习笔记(十四)——HMM估计问题和前向后向算法
- PAT算法笔记(三)————数素数
- 算法练习笔记(十四)——类树形三角
- PAT算法笔记(十七)————月饼
- PAT算法笔记(五)————旧键盘*
- PAT算法笔记(七)————完美数列(快速排序)
- PAT算法笔记(二)————数字分类
- 今天开始学算法笔记,想去考一下PAT
- PAT算法笔记(一) ————A+B和C
- PAT算法笔记(十五)————D进制的A+B
- PAT basic-level 1024 科学计数法 笔记
- 数据结构编程笔记十四:第六章 树和二叉树 二叉树基本操作及四种遍历算法的实现
- 设计模式学习笔记(十四)——创建型模式总结
- 链栈实现算法 - Java 学习笔记(26)
- Linux实践工程师学习笔记十四
- OpenGL入门笔记(十四)
- 算法学习笔记--排序(简介)
- 设计模式学习笔记(十四)——创建型模式总结