//
// main.cpp
// PATA1060
//
// Created by Phoenix on 2018/2/15.
// Copyright © 2018年 Phoenix. All rights reserved.
//
#include <iostream>
#include <cstdio>
#include <string>
using namespace std;
int main(int argc, const char * argv[]) {
int n;
string a, b;
cin >> n >> a >> b;
int lena, lenb, k1, k2;
lena = a.size(); lenb = b.size();
int k = -1;
for(int i = 0; i < lena; i++) {
if(a[i] == '.') {
k = i;
}
}
if(k == -1) {
while(a[0] == '0') a.erase(a.begin());
k1 = a.size();
}
else if(k == 1 && a[0] == '0'){
for(int i = 2; i < lena; i++) {
if(a[i] != '0') {
k1 = 2 - i;
break;
}
}
} else if(k == 1 && a[0] !='0'){
k1 = 1;
}
else {
while(a[0] == '0') {
a.erase(a.begin());
k--;
}
k1 = k;
}
k = -1;
for(int i = 0; i < lenb; i++) {
if(b[i] == '.') {
k = i;
}
}
if(k == -1) {
while(b[0] == '0') b.erase(b.begin());
k2 = b.size();
}
else if(k == 1 && b[0] == '0'){
for(int i = 2; i < lenb; i++) {
if(b[i] != '0') {
k2 = 2 - i;
break;
}
}
} else if(k == 1 && b[0] != '0'){
k2 = 1;
}
else {
while(b[0] == '0') {
b.erase(b.begin());
k--;
}
k2 = k;
}
string s1, s2;
s1 += "0."; s2 += "0.";
int j = 0;
k = 0;
while(a[0] == '0' || a[0] == '.') {
a.erase(a.begin());
}
if(a.size() == 0) k1 = 0;
while(k < n && k < a.size()) {
if(a[j] != '.') {
s1 += a[j++];
k++;
} else{
j++;
}
}
while(k < n) {
s1 += '0';
k++;
}
s1 += "*10^" + to_string(k1);
j = 0;
k = 0;
while(b[0] == '0' || b[0] == '.') {
b.erase(b.begin());
}
if(b.size() == 0) k2 = 0;
while(k < n && k < b.size()) {
if(b[j] != '.') {
s2 += b[j++];
k++;
}else{
j++;
}
}
while(k < n) {
s2 += '0';
k++;
}
s2 += "*10^" + to_string(k2);
if(s1 == s2) {
printf("YES ");
cout << s1 << endl;
} else {
printf("NO ");
cout << s1 <<" "<< s2 << endl;
}
return 0;
}
PATA1060题解
最新推荐文章于 2021-08-23 11:44:19 发布