#include <string>
#include <iostream>
using namespace std;
int N;
void getK(string &num,int &n){
while(num[0] == '0') num.erase(num.begin());
if(num.length() == 0){ //处理0
num = "0";
n = 0;
return;
}else if(num[0] == '.'){ //处理小于1的数
num.erase(num.begin());
n=0;
while(num[0]=='0'){
n--;
num.erase(num.begin());
}
if(num.length() == 0){
n=0;
num = "0";
}
return;
}else{ //处理大于1的数
int local = num.find(".");
if(local == string ::npos){ //如果这个数字没有小数部分
n = num.length();
return ;
}else{ //处理混合型的数组
n = local;
num.erase(num.begin()+local);
return;
}
}
}
void getN(string &num){
while(num.length()<N){
num+="0";
}
}
bool compare(string &num1,string &num2){
getN(num1);
getN(num2);
num1= num1.substr(0,N);
num2 = num2.substr(0,N);
if( num1 == num2 ){
cout<<"YES ";
return true;
}else{
cout<<"NO ";
return false;
}
}
int main(){
string num1,num2;
cin>>N>>num1>>num2;
int e1,e2;
getK(num1,e1);
getK(num2,e2);
if(compare(num1,num2)){
cout<< "0."<<num2<<"*10^"<<e2 <<endl;
}else{
cout<< "0."<<num1<<"*10^"<<e1<<" ";
cout<< "0."<<num2<<"*10^"<<e2<<endl;
}
return 0;
}
PAT A1060 Are They Equal
最新推荐文章于 2021-05-17 21:29:14 发布