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
- 1060. Are They Equal (25)-PAT
- pat 1060. Are They Equal (25)
- PAT A 1060. Are They Equal (25)
- PAT 1060. Are They Equal (25)
- PAT 1060. Are They Equal (25)
- PAT 1060. Are They Equal (25)
- PAT(A) - 1060. Are They Equal (25)
- 【PAT甲级】1060. Are They Equal (25)
- 1060. Are They Equal (25)PAT甲级
- PAT甲级1060. Are They Equal (25)
- PAT 1060. Are They Equal (25)
- PAT 甲级 1060. Are They Equal (25)
- PAT甲级 1060. Are They Equal (25)
- PAT 1060. Are They Equal
- PAT 1060. Are They Equal
- PAT 1060. Are They Equal
- 【PAT】1060. Are They Equal
- PAT 1060. Are They Equal (25) 只做出19分。。
- 记录-开篇
- 新手如何学习Linux
- C语言程序代码优化
- 买一卖一价格
- 【USACO 2008 Nov Gold】 1.Mixed Up Cows 状压DP、
- PAT 1060. Are They Equal (25)
- swift语言IOS8开发战记5.使用纯代码的方式实现tableViewCell
- vector 的迭代和删除元素
- Java中方法重载与方法重写
- 【Visual C++】游戏开发笔记二十八 最精简的Direct3D11 Demo筋骨脉络全攻略
- golang中sort包用法
- 实验四 字符串和多维数组
- Qt使用总结
- pathon 中 str和repr区别