zoukankan      html  css  js  c++  java
  • PAT:1060. Are They Equal (25) AC

    #include<iostream>
    #include<string>
    #include<vector>
    #include<algorithm>
    using namespace std;
    
    int  n;
    
    string deal(string s,int &e)          //【思维】1:吸收多余0:。2:找到“.”判断与1的大小。3:去除“.”的同时统计10的指数(正负与step2有关)
    {                        //4:判断是否删完了,删完了表明数字是0。5:存入前n个数字,不足用0补。返回
      int k=0;
      while(s.size()>0 && s[0]=='0')        //吸收.前面多余的0
        s.erase(s.begin());
      if(s[0]=='.')                //Situation1:数字小于1
      {
        s.erase(s.begin());            //删除“.”
        while(s.size()>0 && s[0]=='0')      //吸收.前面多余的0
        {
          s.erase(s.begin());
          --e;                //指数为负
        }
      }
      else                    //Situation2:数字大于1
      {
        while(k<s.size() && s[k]!='.')      //数小数点前有几位
        {
          ++k;
          ++e;
        }
        if(k<s.size())              //删除“.”
          s.erase(s.begin()+k);
      }
      if(s.size()==0)                //这个数为0
        e=0;
      k=0;                    //下标归零
      int num=0;
      string str;
      while(num<n)                //将前n位有效数字存入str
      {
        if(k<s.size())
          str+=s[k++];            //后面接上
        else
          str+='0';
        ++num;
      }
      return str;
    }
    
    int main()
    {
      string s1,s2,s3,s4;
      cin>>n>>s1>>s2;
      int e1=0,e2=0;      //s1,s2的指数
      
      s3=deal(s1,e1);
      s4=deal(s2,e2);
    
      if(s3==s4 && e1==e2)
        cout<<"YES 0."<<s3<<"*10^"<<e1<<endl;
      else
        cout<<"NO 0."<<s3<<"*10^"<<e1<<" 0."<<s4<<"*10^"<<e2<<endl;
      return 0;
    }
  • 相关阅读:
    DS博客作业02--栈和队列
    DS博客作业01--线性表
    c博客06-结构体&文件
    C博客作业05--指针
    C语言博客作业04--数组
    C语言博客作业03--函数
    JAVA面向对象设计大作业——QQ联系人系统
    DS博客作业05--查找
    DS博客作业04--图
    DS博客作业03--树
  • 原文地址:https://www.cnblogs.com/Evence/p/4328534.html
Copyright © 2011-2022 走看看