pat乙级1024. 科学计数法 (20)

8人阅读 评论(0) 收藏 举报
分类:

原题链接:https://www.patest.cn/contests/pat-b-practise/1024

1024. 科学计数法 (20)

时间限制
100 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
HOU, Qiming

科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][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

算法设计:

用字符串s存储读取的科学计数法形式的字符串,利用字符串s1存储s中的小数部分(不存储小数点),利用int型变量 i 存储指数部分的值。按 i 的正负分两种情况讨论:

  1. i为负,这种情况一定会输出“0.000XXX”的形式,其中小数点后连续的0的个数为i-1,而后面XXX部分即为s1整个字符串
  2. i为正,分两种情况:如果i>=s1.size()-1,先输出s1整个字符串,然后输出i+1-s1.size()个0即可;否则输出s1整个字符串,并在输出s1的第i个字符之后输出一个小数点即可。

c++代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
    string s,s1="";
    cin>>s;//读取输入的科学计数法形式的字符串
    if(s[0]=='-')//如果是负数先输出-号
        cout<<"-";
    int i=1;
    while(s[i]!='E'){//将小数部分删去小数点存储到s1字符串中
        if(s[i]!='.')
            s1+=s[i];
        ++i;
    }
    i=stoi(s.substr(++i));//将指数部分存储为一个整型变量
    if(i<0){//i为负,输出“0.000XXX”的形式,其中小数点后连续的0的个数为i-1,而后面XXX部分即为s1整个字符串
        cout<<"0.";
        i=abs(i)-1;
        for(int j=0;j<i;++j)
            cout<<"0";
        cout<<s1;
    }else//i为正,分两种情况
        if(i>=s1.size()-1){//如果i>=s1.size()-1,先输出s1整个字符串,然后输出i+1-s1.size()个0
            cout<<s1;
            for(int j=0;j<i+1-s1.size();++j)
                cout<<"0";
        }else//否则输出s1整个字符串,并在输出s1的第i个字符之后输出一个小数点
            for(int j=0;j<s1.size();++j){
                cout<<s1[j];
                if(j==i)
                    cout<<".";
            }
    return 0;
}

查看评论

数据结构基础系列(7):图

-
  • 1970年01月01日 08:00

PAT乙级—1024. 科学计数法 (20)-native

科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9]”.”[0-9]+E[+-][0-9]+,即数字的整数部分只有1位,小数部分至少有1位,该数字及其指数部分...
  • wanmeiwushang
  • wanmeiwushang
  • 2016-05-08 22:32:56
  • 1821

PAT-乙级-1024. 科学计数法 (20)

1024. 科学计数法 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者...
  • orange2a
  • orange2a
  • 2016-07-14 20:01:17
  • 218

Java - PAT - 1024. 科学计数法 (20)

科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9]"."[0-9]+E[+-][0-9]+,即数字的整数部分只有1位,小数部分至少有1位,该数字及其指数部分...
  • qq_34594236
  • qq_34594236
  • 2016-07-25 00:32:25
  • 620

PAT1024 科学计数法

不知道语言内部到底怎么处理,总觉得充满艺术性
  • u013827143
  • u013827143
  • 2014-05-18 21:01:51
  • 356

PAT Basic 1024. 科学计数法 (20)(C语言实现)

题目 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9]"."[0-9]+E[+-][0-9]+,即数字的整数部分只有1位,小数部分至少有1位,该数字及其...
  • Oliver__Lew
  • Oliver__Lew
  • 2017-05-18 23:45:28
  • 741

PAT-1024 科学计数法

PAT有个没过,牛客都过了。本来以为是指数为0的问题,然而并不是。 #include #include #include #include #include #include using...
  • WeiJJ6608
  • WeiJJ6608
  • 2016-02-28 16:49:38
  • 392

PAT乙级1024(C语言)-科学计数法 (20)

科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9]"."[0-9]+E[+-][0-9]+,即数字的整数部分只有1位,小数部分至少有1位,该数字及其指数部分...
  • jinwanchiji
  • jinwanchiji
  • 2018-02-11 21:54:03
  • 83

PAT (Basic Level) Practise (中文)1024. 科学计数法 (20) C语言

1024. 科学计数法 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B ...
  • Pandoraemon
  • Pandoraemon
  • 2015-07-21 14:01:02
  • 607

PAT 1024. 科学计数法

题目:http://pat.zju.edu.cn/contests/pat-b-practise/1024 题解: 将输入的科学计数法数字转换为正常的数字。 分子分母至少有1位。 按指数的正负分情况处...
  • ACM_Ted
  • ACM_Ted
  • 2014-03-03 16:47:53
  • 2119
    个人资料
    持之以恒
    等级:
    访问量: 3468
    积分: 2225
    排名: 2万+
    文章存档
    最新评论