PAT 1060. Are They Equal (25)

来源:互联网 发布:筱崎爱 知乎 编辑:程序博客网 时间:2024/04/30 06:25

题目比较简单,主要注意测试几个特殊用例。

看到网上基本大家写的都是将有效位放在另外数组里面存放,这样也不错。


//1060. Are They Equal (25)//测试用例://    4 05.032 5.032           数字前面为0的情况;//          3 0 0.0//          3 3.87 3.87000#include <iostream>#include <string>#include <functional>using namespace std;int N;string a, b;int BStart = -1;int BPoint = -1;int AStart = -1;int APoint = -1;void outB(){int count = 0;int i;for (i = BStart;i<b.size();i++){if (count == N){break;}if (b[i] == '.'){continue;}cout << b[i];count++;}while (count < N){count++;cout << "0";}if (BPoint < BStart){BPoint++;}cout << "*10^" << BPoint - BStart;}void outA(){int i;int count = 0;for (i = AStart;i<a.size();i++){if (count == N){break;}if (a[i] == '.'){continue;}cout << a[i];count++;}while (count < N){count++;cout << "0";}if (APoint < AStart){APoint++;}cout << "*10^" << APoint - AStart;}int main(void){#ifdef ONLINE_JUDGE#elsefreopen("D:\\1.txt", "r", stdin);#endifcin >> N >> a >> b;APoint = a.size();BPoint = b.size();int i = 0;for (i = 0;i<a.size();i++){if (AStart !=-1 && APoint != a.size()){break;}if (a[i] == '.'){APoint = i;}if (a[i]!='.' && a[i] != '0' && AStart == -1){AStart = i;}}for (i = 0;i<b.size();i++){if (BStart !=-1 && BPoint != b.size()){break;}if (b[i] == '.'){BPoint = i;}if (b[i] != '.' && b[i] != '0' && BStart == -1){BStart = i;}}int count = 0;if (AStart == -1){if (BStart == -1){cout << "YES 0.";for (int j  =0 ;j<N;j++){cout<<"0";}cout << "*10^0";}else{cout << "NO 0.";for (int j  =0 ;j<N;j++){cout<<"0";}cout << "*10^0 0.";outB();}return 0;}if (AStart!=-1 && BStart == -1){cout << "NO 0.";count = 0;for (i = AStart;i<a.size();i++){if (count == N){break;}if (a[i] == '.'){count--;}cout << a[i];count++;}while (count < N){count++;cout << "0";}if (APoint < AStart){APoint++;}cout << "*10^" << APoint - AStart;cout << " 0.";for (i = 0;i<N;i++){cout << "0";}cout << "*10^0";return 0;}bool flag = true;//if (AStart == BStart && APoint == BPoint)int j;if(BPoint - BStart == APoint - AStart){for (i = AStart; i<a.size();i++){j = BStart - AStart + i;if (j == b.size()){break;}if (count == N){break;}if (a[i] == '.'){continue;}char t1 = a[i];char t2 = b[j];if (a[i] != b[j]){flag = false;break;}count++;}if (count < N){if (j == b.size() && i < a.size()){for (;i<a.size();i++){if (count == N){break;}if (a[i] != '0'){flag = false;break;}count++;}}if (i == a.size() && j < b.size()){for (;j<b.size();j++){if (count == N){break;}if (b[i] != '0'){flag = false;break;}count++;}}}if (flag)//判断后面N为是否相同{printf("YES 0.");outB();return 0;}}printf("NO 0.");outA();cout << " 0.";outB();return 0;}


0 0
原创粉丝点击