AcWing 1546. 它们是否相等
原题链接
中等
作者:
leo123456
,
2020-09-01 22:10:11
,
所有人可见
,
阅读 590
#include<iostream>
#include<cstring>
using namespace std;
string change(string a,int n)
{
int k=a.find("."); //先找到小数点位置
if(k==-1) a+='.',k=a.find("."); //没有·在字符后点加一个再找
string s=a.substr(0,k)+a.substr(k+1); //把小数点删掉
while(s.size()&&s[0]=='0') s=s.substr(1),k--;//删除前导0
if(s.empty()==1) k=0; //s=0 指数为0
if(s.size()>n) s=s.substr(0,n);
else s+=string(n-s.size(),'0'); //后面补0
return "0."+s+"*10^"+to_string(k);
}
int main()
{
int n;
string a,b;
cin>>n>>a>>b;
a=change(a,n);
b=change(b,n);
if(a==b) cout<<"YES "<<a<<endl;
else cout<<"NO "<<a<<' '<<b<<endl;
return 0;
}