PAT1060

来源:互联网 发布:js如何转换日期格式 编辑:程序博客网 时间:2024/06/17 20:22
#include<stdio.h>#include<string>#include<iostream>using namespace std;void deal1(string &s)//处里前导0 {while(s.size()>0&&*(s.begin())=='0'){s.erase(s.begin());}}int deal2(string &s){string::iterator it=s.begin();if(*it=='.')//.xxxxx的情况 {s.erase(it);it=s.begin();int exp=0;while(it!=s.end()&&(*it)=='0'){s.erase(it);exp--;}if(s.size()==0)//0.000等情况 exp=0;return exp;}else{while(*it!='.'&&it!=s.end())it++;if(it==s.end())//没有小数点的情况 return s.size();else{int exp=it-s.begin();s.erase(it);return exp;}}}string str1,str2;int n;int main(){int e1,e2;//freopen("in.txt","r",stdin);cin>>n>>str1>>str2;deal1(str1);deal1(str2);if(str1.size()>0)e1=deal2(str1);if(str2.size()>0)e2=deal2(str2);if(str1.size()==0&&str2.size()==0){printf("YES 0.");for(int i=0;i<n;i++)printf("0");printf("*10^0\n");//是0的时候也要按规定输出! return 0;}if(str1.size()>n)str1.erase(str1.begin()+n,str1.end());//删除有效位以后的数字 if(str2.size()>n)str2.erase(str2.begin()+n,str2.end());//删除有效位以后的数字  if(e1==e2){int flag=1;for(int i=0;i<n&&i<str1.size()&&i<str2.size();i++)if(str1[i]!=str2[i]){flag=0;break;}if(flag)printf("YES 0.%s*10^%d\n",str1.c_str(),e1);elseprintf("NO 0.%s*10^%d 0.%s*10^%d\n",str1.c_str(),e1,str2.c_str(),e2);}elseprintf("NO 0.%s*10^%d 0.%s*10^%d\n",str1.c_str(),e1,str2.c_str(),e2);return 0;}

0 0
原创粉丝点击