1060. Are They Equal (25)

来源:互联网 发布:javaweb书籍推荐知乎 编辑:程序博客网 时间:2024/04/25 05:00

找到第一个有效数字和第一个小数点的位置。然后讨论进行转换

#include<iostream>#include<string>#pragma warning(disable :4996)using namespace std;int N;string change(string str)//str边科学计数法的str{    string str2;int temp;    unsigned int pos1 = str.find('.');    unsigned int pos2 = str.find_first_not_of("0.");    if (pos2 >= str.length()) {        str2 = string(N, '0');        temp = 0;    }    else    {        str2=string(str, pos2);        int pos = str2.find('.');        if(pos<str2.length())str2.erase(pos,1);        str2 += string(N, '0');        str2.resize(N);        if (pos1 >= str.length())            temp = str.length() - pos2;        else            temp = pos1 < pos2 ? pos1 - pos2 +1: pos1 - pos2;    }    char t[10000];    sprintf(t, "0.%s*10^%d", str2.c_str(), temp);    if(N==0) sprintf(t, "0.0*10^0");    return string(t);}int main(){    cin >> N;    string str1,str2;    cin >> str1>>str2;    str1 = change(str1);    str2 = change(str2);    if (str1 == str2) cout << "YES " << str1 << endl;    else cout << "NO " <<str1 << " " << str2 << endl;}
0 0
原创粉丝点击