PAT 1020Are They Equal (25)
来源:互联网 发布:南泥湾种鸦片 知乎 编辑:程序博客网 时间:2024/06/01 07:30
思路
特殊输入有 0.000 0.0123 123.02 123402
- 1.找到小数点’.’的位置,小数点’.’是第几个就代表指数项e是几,除了俩种情况即无小数点123402(返回-1)和<1的数
- 2.对于无小数点的,e就等于它的长度,对于<1的数,要数除去小数点后有几个0,然后就减去几(例如0.0123 = 1 - 2 =-1,即表示为0.123时指数为-1),再对于0.000 这种情况,直接令其指数为0即可。
- 3.以上步骤已经得到指数项e,接下来求base,即先去除小数点,如果length小于n则补零,否则从a中取第i个就可以了。
- 4.最后在比较e和base,如果都相等则相等。
我出错的一些点
- 1.这个以前没用过
int pos = a.find('.');
- 2.这里以前也没用过
a = a.erase(pos, 1);
- 3.忘记输入为0.000这种情况。
代码
#include <iostream>#include <string>using namespace std;void find_base_e(string &a,int &e1,string &base1,int n){ //第一步:找到'.' int pos = a.find('.'); int length = a.length(); //第二步:求得e,分三种情况 if (pos < 0) { //第一种 e1 = length; } else { //第二种 e1 = pos; a = a.erase(pos, 1); } //第三种 length = a.length(); for (int i = 0; i < length; i++) { if (a[0] == '0') { //针对 0.000这种情况 if ((int)a.size() == 1 && a[0] == '0') { e1 = 0; break; } a.erase(0, 1); e1--; } else break; } //第三部:求得base base1 = ""; length = a.length(); for (int i = 0; i < n; i++) { if (i < length) { base1 += a[i]; } else base1 += '0'; }}int main(){ int n; string a, b; cin >> n >> a >> b; string base1, base2; int e1, e2; find_base_e(a, e1, base1,n); find_base_e(b, e2, base2, n); if (base1 == base2&&e1 == e2) { cout << "YES " << "0." << base1 << "*10^" << e1 << endl; } else { cout << "NO "; cout << "0." << base1 << "*10^" << e1; cout << " "; cout << "0." << base2 << "*10^" << e2; cout << endl; } return 0;}
0 0
- PAT 1020Are They Equal (25)
- 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-A1060. Are They Equal (25)
- PAT(A) - 1060. Are They Equal (25)
- 【PAT甲级】1060. Are They Equal (25)
- PAT A1060. Are They Equal (25)
- 1060. Are They Equal (25)PAT甲级
- PAT A1060 are they equal (25)
- PAT甲级1060. Are They Equal (25)
- pat-a1060. Are They Equal (25)
- PAT 1060. Are They Equal (25)
- PAT 甲级 1060. Are They Equal (25)
- PAT甲级 1060. Are They Equal (25)
- cygwin 2.8.74版本离线包(分别为win7 32和64位)
- xml解析工具类
- #NOIP 2014#day.2 T1 无限网络发射器选址
- 09.树.二叉树
- node.js
- PAT 1020Are They Equal (25)
- 渗透测试攻防练习实验室 (资源分享,国外在线教程)
- 原生js判断浏览器与平台
- 从理论认识J2EE
- cannot resolve corresponding JNI function
- DAY01_Q1
- Http请求util类
- 大话设计模式24----职责链模式
- 安装mysql会出现start service错误