PAT1024
科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9]"."[0-9]+E[+-][0-9]+,即数字的整数部分只有1位,小数部分至少有1位,该数字及其指数部分的正负号即使对正数也必定明确给出。
现以科学计数法的格式给出实数A,请编写程序按普通数字表示法输出A,并保证所有有效位都被保留。
输入格式:
每个输入包含1个测试用例,即一个以科学计数法表示的实数A。该数字的存储长度不超过9999字节,且其指数的绝对值不超过9999。
输出格式:
对每个测试用例,在一行中按普通数字表示法输出A,并保证所有有效位都被保留,包括末尾的0。
输入样例1:
+1.23400E-03
输出样例1:
0.00123400
输入样例2:
-1.2E+10
输出样例2:
-12000000000
技巧:分段输出 比如1.23400 * 10^-3 等于0.00123400
把0.看出一段 这是无论如何都存在的 所以可以先输出0.
中间的00看成一段 这一段的0个数与指数有关 指数为-1 输出0个0 指数为-2 输出1个0 以此类推 循环输出
最后的主体部分123400 就是原式中的1.23400去掉小数点 处理一下输出
三次输出,构成答案,如果全部挤在一起输出 会显复杂
# include<iostream>
# include<algorithm>
# include<stdio.h>
# include<string>
using namespace std;
int main()
{
char s[],fuhao1,fuhao2,zs[];
int i,zhi=,j,h=,k=,flag=,tn = ;
int zhishu;
string a;
cin>>a;
fuhao1 = a[];
if(fuhao1=='+') //分段输出----------符号
{ }
else
{
cout<<"-";
}
for(i=;i<a.length();i++) //利用flag 将字符串a分成 主体数字字符串 、指数符号、 指数字符串 三个部分
{
if(a[i]=='E')
{
flag = ; continue;
} if(flag==)
{
s[+h] = a[i]; h++;
}
else if(flag == )
{
fuhao2 = a[i]; flag = ; continue;
}
else
{
zs[k]=a[i]; k++;
}
} for(i=k-;i>=;i--) //将指数字符串 转化为 整数形式
{
zhi = zhi + (zs[i]-'')*tn;
tn = tn * ;
} if(fuhao2=='+') //如果指数前的符号为正 分为3种可能 小数点仍存在 小数点刚好消失 小数点消失且要加0
{
if(h>zhi+)
{
char t;
t = s[]; //保存小数点
for(i=;i<zhi;i++) //数组循环前移,覆盖住了小数点的位置
{
s[+i] = s[+i];
}
s[+zhi] = t; //将小数点 放在数组前移后留下的最后一个位置
for(i=;i<h;i++)
{
cout<<s[+i];
}
}
else if(h==zhi+)
{
for(i=;i<h;i++)
{
if(i==)
{
continue;
}
cout<<s[+i];
}
}
else
{
for(i=;i<h-;i++) //数组循环前移覆盖小数点
{
s[+i] = s[+i];
}
zhishu = zhi -h + ;
for(j=;j<zhishu;j++)
{
s[+i-+j] = ''; //加0
}
for(i=;i<=zhi;i++)
{
cout<<s[+i];
}
}
}
else
{ char t;
t = s[];s[]=s[];s[]=t;
cout<<"0.";
for(i=;i<zhi;i++)
{
cout<<"";
}
for(i=;i<h;i++)
{
cout<<s[+i];
} }
return ;
}
PAT1024的更多相关文章
- PAT1024. Palindromic Number
//自己方法只能拿到15分后边老是又过不了的点,用了网上别人的方法,用库函数的翻转reverse(),参数分别是起始位置个结束位置,注意只能在原存储空间翻转,即比较对称时,再生请一个空间,将原来字符串 ...
- PAT1024 强行用链表写了一发。
主要的思想还是 上课的那个PPT上面的 链表反转的思想. 然后加一点七七八八的 递推. 一层一层往下翻转就好啦. 1A 真开心. 代码:http://paste.ubuntu.net/16506799 ...
- PAT1024. Palindromic Number (25)
输入即为回文的情况要考虑 #include <iostream> #include <algorithm> //reverse using namespace std; str ...
- PAT1136:A Delayed Palindrome
1136. A Delayed Palindrome (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue ...
随机推荐
- JAVA设计模式初探之适配器模式(转)
1. 概述 将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作. 2. 解决的问题 即Adapter模式使得原本由于接口不兼容而不 ...
- codeforce 599C Day at the Beach
Bi表示第i个块,那么就是说Bi max ≤ Bi+1 min,又因为Bi min ≤ Bi max, 因此只要判断前缀的最大值是否小于等于后缀. #include<bits/stdc++.h& ...
- Android(java)学习笔记154:采用HttpClient提交数据(qq登录案例)
1.Apache -Httpclient HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的.最新的.功能丰富的支持 HTTP 协议的客户端编程工具包 ...
- python_60_装饰器3
#嵌套函数 def foo(): print('in the foo') def bar(): print('in the bar') bar() #bar()#出错,无法在外边调用,bar函数的作用 ...
- python_23_tuple
#元组只能统计和获取下表,不能插入之类的.元组和列表差不多,也是存一组数,只是它一旦创建,便不能再修改,所以又叫只读列表 names=('QiZhiguang','LiuGuannan','Liang ...
- html5shiv.js的作用是
解析 html5shiv主要解决HTML5提出的新的元素不被IE6-8识别,这些新元素不能作为父节点包裹子元素,并且不能应用CSS样式.让CSS 样式应用在未知元素上只需执行 document.cre ...
- React后台管理系统- rc-pagination分页组件封装
1.用户列表页面使用的rc-pagination分页组件 Github地址: https://github.com/react-component/pagination 2.安装 cnpm insta ...
- for in 和 for of的区别详解
for in 和 for of 相对于大家肯定都不陌生,都是用来遍历属性的没错.那么先看下面的一个例子: 例1 const obj = { a: 1, b: 2, c: 3 } for (let i ...
- jqweui 中的tabbar导航
最近做微信的服务号项目,用的jqweui作为主要的ui,但是对于用惯了ele ui的开发者来说,文档貌似有点不友好.真是很让人头疼! 所以结合着自己做的项目,随便写一点东西. 比如说,tabbar导航 ...
- vmware 开机自动启动
vmware开机自动启动, 可以使用vmrun命令. 1. 首先在“我的电脑”-“属性”-“高级”-“环境变量”-“PATH”中添加vmware路径,如:C:\Program Files (x86)\ ...