ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

PAT 甲级 A1060 (2019/02/22)

2019-02-22 17:38:43  阅读:214  来源: 互联网

标签:02 PAT 22 int 小数点 while && 去掉 e1


 1 #include<cstdio>
 2 #include<cstring>
 3 #include<iostream>
 4 using namespace std;
 5 int n;
 6 string Deal(string S, int &e){
 7     int k = 0;    //s的下标
 8     while(S.length() > 0 && S[0] == '0'){
 9         S.erase(S.begin());        //去掉S的前导0 
10     }
11     if(S[0] == '.'){        //若去掉前导0后是小数点,则说明S是小于1的学生 
12         S.erase(S.begin());        //去掉小数点
13         while(S.length() > 0 && S[0] == '0'){
14             S.erase(S.begin());    //去掉小数点后面非零位前的所有零 
15             e--;    //每去掉一个零,指数e减1        
16         } 
17     }else{        //若去掉前导0后不是小数点,则找到后面的小数点删除 
18         while(k < S.length() && S[k] != '.'){    //寻找小数点 
19             k++;
20             e++;    //只要不遇到小数点,就让指数e++ 
21         }
22         if(k < S.length()){    //while结束后k<S.length(),说明遇到了小数点 
23             S.erase(S.begin() + k);        //删除小数点 
24         } 
25     }
26     if(S.length() == 0){
27         e = 0;        //如果去掉前导0后S的长度为0,则这个数为0 
28     }
29     int num = 0;    //
30     k = 0;
31     string res;
32     while(num < n){        //只要精度还没到n 
33         if(k < S.length())    
34             res +=S[k++];    //只要还有数字,就加到res末尾 
35         else 
36             res += '0';        //否则res末尾添加0 
37         num++;        //精度加1 
38     }
39     return res;
40 } 
41 int main(){
42     string S1, S2, S3, S4;    
43     cin >> n >> S1 >> S2;
44     int e1 = 0, e2 = 0;        //e1 e2为S1 S2的指数 
45     S3 = Deal(S1, e1);
46     S4 = Deal(S2, e2);
47     if(S3 == S4 && e1 == e2)        //若主体&指数相同,则输出“YES” 
48         cout << "YES 0." << S3 << "*10^" << e1 << endl;         
49     else            //这里对于YES,NO应该是字母全部大写
50         cout << "NO 0." << S3 << "*10^" << e1 << " 0." << S4 << "*10^" << e2 << endl;
51     return 0;
52 } 

 

标签:02,PAT,22,int,小数点,while,&&,去掉,e1
来源: https://www.cnblogs.com/zjsaipplp/p/10419669.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有