PAT 1060 Are They Equal (25 分)

mac2026-01-24  8

#include <iostream> #include <string> using namespace std; int n; string deal(string str,int& e) { int k=0; //去掉前缀0 while(str.length()>0&&str[0]=='0') str.erase(str.begin()); //如果是小数 if(str[0]=='.') { str.erase(str.begin()); //去掉前缀0,同时指数减一 while(str.length()>0&&str[0]=='0') { str.erase(str.begin()); e--; } } //不是小数 else { //统计小数点前位数 while(k<str.length()&&str[k]!='.') { k++; e++; } //去掉小数点 if(k<str.length()) str.erase(str.begin()+k); } //去掉0和小数点后str为空,指数为0 if(str.length()==0) e=0; int num=0; k=0; string rec; //精确到n位 while(num<n) { if(k<str.length()) rec+=str[k++]; else rec+='0'; num++; } return rec; } int main() { string a,b,c,d; cin>>n>>a>>b; int e1=0,e2=0; c=deal(a,e1); d=deal(b,e2); if(c==d&&e1==e2) cout<<"YES 0."<<c<<"*10^"<<e1<<endl; else cout<<"NO 0."<<c<<"*10^"<<e1<<" 0."<<d<<"*10^"<<e2<<endl; return 0; }
最新回复(0)