# 1060 Are They Equal (25 分)

If a machine can save only 3 significant digits, the float numbers 12300 and 12358.9 are considered equal since they are both saved as 0 with simple chopping. Now given the number of significant digits on a machine and two float numbers, you are supposed to tell if they are treated equal in that machine.

### Input Specification:

Each input file contains one test case which gives three numbers

### Output Specification:

For each test case, print in a line YES if the two numbers are treated equal, and then the number in the standard form 0.d...d[N]*10^k (d>0 unless the number is 0); or NO if they are not treated equal, and then the two numbers in their standard form. All the terms must be separated by a space, with no extra space at the end of a line.

Note: Simple chopping is assumed without rounding.

### Sample Input 1:

3 12300 12358.9

### Sample Output 1:

YES 0.123*10^5

### Sample Input 2:

3 120 128

### Sample Output 2:

NO 0.120*10^3 0.128*10^3

#include<bits/stdc++.h>
using namespace std;
const int maxn=1010;

int main(){
int n;
cin>>n;
string a,b;
cin>>a>>b;
int lena=0,lenb=0;
for(int i=0;i<a.size();i++){
if(a[i]==‘.‘){
break;
}
else{
lena++;
}
}
for(int i=0;i<b.size();i++){
if(b[i]==‘.‘){
break;
}
else{
lenb++;
}
}
string suba="";
for(int i=0;i<a.size();i++){
if(a[i]!=‘.‘&&suba.size()<n){
suba+=a[i];
}
}
while(suba.size()<n){
suba+=‘0‘;
}
string subb="";
for(int i=0;i<b.size();i++){
if(b[i]!=‘.‘&&subb.size()<n){
subb+=b[i];
}
}
while(subb.size()<n){
subb+=‘0‘;
}
if(a=="0"){
cout<<"NO"<<" "<<"0"<<" ";
cout<<"0."<<subb<<"*10^"<<lenb<<endl;
}
else if(b=="0"){
cout<<"NO"<<" ";
cout<<"0."<<suba<<"*10^"<<lena<<endl;
cout<<"0"<<" ";

}
else if(subb==suba&&lena==lenb){
cout<<"YES"<<" ";
cout<<"0."<<suba<<"*10^"<<lena<<endl;
}
else{
cout<<"NO"<<" ";
cout<<"0."<<suba<<"*10^"<<lena<<" ";
cout<<"0."<<subb<<"*10^"<<lenb<<endl;
}

return 0;
}

1060 Are They Equal (25 分)

(0)
(0) 