#include <iostream>
#include <cstdio>
#include <cstring>
#include <vector>
using namespace std;
#define N 300
void copydigits(int n[], char s1[], char s2[]) {
int len1 = strlen(s1);
for(int i = 0; i < len1; i ++) {
n[100-1-i] = s1[len1-1-i] - '0';
}
int len2 = strlen(s2);
for(int i = 0; i < len2; i ++) {
n[100+i] = s2[i] - '0';
}
}
void standardize(int n[], int p, vector<int> &digits, int &exp) {
int i = 0;
while(n[i] == 0 && i < 100) i ++;
if(i < 100) {
exp = 100 - i;
for(int j = 0; j < p; j ++) {
digits.push_back(n[i+j]);
}
}
else {
while(n[i] == 0 && i < 200) i ++;
if(i < 200) {
exp = 100 - i;
for(int j = 0; j < p; j ++) {
digits.push_back(n[i+j]);
}
}
else {
exp = 0;
for(int j = 0; j < p; j ++) {
digits.push_back(0);
}
}
}
}
void printnumber(vector<int> &digits, int exp) {
putchar('0');
putchar('.');
for(int i = 0; i < digits.size(); i ++) {
putchar(digits[i] + '0');
}
// if(exp) {
printf("*10^%d", exp);
// }
}
int main(int argc, char **argv) {
int p;
cin >> p;
int number[2][N] = {};
vector<int> digits[2];
int exp[2];
for(int i = 0; i < 2; i ++) {
char str[N];
scanf("%s", str);
char s1[N], s2[N];
int j;
for(j = 0; str[j] != 0 && str[j] != '.'; j ++) {
s1[j] = str[j];
}
s1[j] = 0;
if(str[j]) {
int k;
for(k = 0; str[j+1+k] != 0; k ++) {
s2[k] = str[j+1+k];
}
s2[k] = 0;
}
else
s2[0] = 0;
copydigits(number[i], s1, s2);
standardize(number[i], p, digits[i], exp[i]);
}
bool equal = true;
if(exp[0] == exp[1]) {
for(int i = 0; i < p; i ++) {
if(digits[0][i] != digits[1][i]) {
equal = false;
break;
}
}
}
else
equal = false;
printf(equal ? "YES" : "NO");
putchar(' ');
printnumber(digits[0], exp[0]);
if(!equal) {
putchar(' ');
printnumber(digits[1], exp[1]);
}
putchar('\n');
return 0;
}
1060. Are They Equal (25)
最新推荐文章于 2019-07-18 09:32:00 发布