首页 > 其他 > 详细

PAT A1060_Are They Equel

时间:2019-02-28 10:20:43      阅读:126      评论:0      收藏:0      [点我收藏+]

AC代码:

#include <iostream>
#include <cstdio>
#include <string>
using namespace std;
int n;

string hanshu(string s,int& e)
{
    while(s.size()>0 && s[0]==0)     //清除前置0 
        s.erase(s.begin());
    
    if(s[0]==.)
    {
        s.erase(s.begin());
        while(s[0]==0 && s.size()>0)
        {
            e--;
            s.erase(s.begin());
        }
    }
    else
    {
        int k=0;
        while(s[k]!=. && k<s.length())
        {
            e++;
            k++;
        }
        if(k<s.size())     //找到了小数点 
        {
            s.erase(s.begin()+k);
        }
    }
    
    if(s.size() == 0)
        e=0;
    
    int len=s.size();
    string s3="0";
    if(len>=n)
        s.erase(s.begin()+n,s.end());
    else
    {
        while(n-len)
        {
            s.insert(len,s3);
            len++;
        }
    }
    
    return s;
}


int main(void)
{
    string s1,s2,ss1,ss2;
    int e1=0,e2=0;;
    cin>>n>>s1>>s2;
    
    ss1 = hanshu(s1,e1);
    ss2 = hanshu(s2,e2);
    
    if(ss1==ss2 && e1==e2)
        cout<<"YES 0."<<ss1<<"*10^"<<e1<<endl;
//        printf("YES 0.%s*10^%d\n",ss1.c_str(),e1);
    else
        cout<<"NO 0."<<ss1<<"*10^"<<e1<<" 0."<<ss2<<"*10^"<<e2<<endl;
//        printf("NO 0.%s*10^%d 0.%s*10^%d\n",ss1.c_str(),e1,ss2.c_str(),e2);
    
    return 0;
}

 

PAT A1060_Are They Equel

原文:https://www.cnblogs.com/phaLQ/p/10448085.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!