PAT 1060 Are They Equal (25 分) 字符串处理(21分)

#include <iostream>
using namespace std;
int n;
string convert(string s){
    int index,i=0,j=0,cnt=0,len=s.length();
    while((s[i]=='0'||s[i]=='.')&&i<len) i++;                   //第一个非0数为s[i],若是0则i=len
    while(s[cnt]!='.'&&cnt<len)cnt++;                //小数点为s[cnt],若无小数点则cnt=len
    if(i<=cnt) index=cnt-i;                 //小数点在非零数右边,指数为cnt-i
    else index=cnt-i+1;                     //小数点在非零数左边,指数为cnt-i+1
    if(i==len)index=0;                      //字符串是0则指数为0
    string res;
    while(j<n){
        if(s[i]!='.'&&i<len) res+=s[i];    //从第一个非零数开始取n个数
        else if(i>=len) res+='0';           //有效位数不够则补0(不包括小数点)
        i++;
        j++;
    }
    return res="0."+res+"*10^"+to_string(index);
}
int main() {
    string a,b;
    cin>>n>>a>>b;
    if(convert(a)==convert(b)) cout<<"YES "<<convert(a);
    else cout<<"NO "<<convert(a)<<" "<<convert(b);
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值