• PAT1060


    题目链接:http://pat.zju.edu.cn/contests/pat-a-practise/1060

    注意几点:(题目都没说清楚,坑)

    1.有前导0的情况 例如:

    3 00000012.3 0000001.1
    NO 0.123*10^2 0.11*10^1

    2.还有就是当位数不足N位时,不需要补全 , 如上的 0000001.1

    3.0的不同表示:如:

    5 0000000 0000000.000000
    YES 0.00000*10^0

    其实这题有些搞笑, 如下:

    4   00000012.0 0000012.00
    NO 0.120*10^2 0.1200*10^2

    同样是0.12不相等。。。  纯字符串比较,题目要求不删除小数部分的后导0

    我的思路:integer函数 算出整数部分有几位,process函数 处理字符串 使其变成0.xxx*10^的格式,最后联合比较就行。

     1 #include<iostream>
     2 #include<string>
     3 using namespace std;
     4 
     5 int integer(string s)
     6 {
     7     if(s.find_first_not_of('0') == string::npos)
     8         return 0;
     9     else
    10     {
    11         int pos=s.find_first_not_of('0');
    12         if(s[pos] == '.')
    13         {
    14             int i=pos+1;
    15             while(i != s.length())
    16             {
    17                 if(s[i] == '0')
    18                     ++i;
    19                 else
    20                     break;
    21             }
    22             if(i == s.length())
    23                 return 0;
    24             else
    25                 return -(i-pos-1);
    26         }
    27         else
    28         {
    29             int i=pos;
    30             while(i != s.length())
    31             {
    32                 if(s[i] != '.')
    33                     ++i;
    34                 else
    35                     break;
    36             }
    37             return i-pos;
    38         }
    39     }
    40 }
    41 
    42 string process(string s, int N)
    43 {
    44     int num=N;
    45     string s1("0.");
    46     int i=0;
    47     for(; i<s.length(); ++i)
    48         if(s[i] != '0' && s[i] != '.')
    49         {
    50             for(int j=i; j<s.length()&&j<i+N; ++j)
    51             {
    52                 if(s[j] == '.')
    53                     ++N;
    54                 else
    55                     s1.push_back(s[j]);
    56             }
    57             break;
    58         }
    59     if(i == s.length())
    60     {
    61         string s2(num, '0');
    62         s1 += s2;
    63     }
    64     return s1+"*10^";
    65 }
    66 
    67 int main()
    68 {
    69     int N; string A, B;
    70     while(cin>>N>>A>>B)
    71     {
    72         string a=process(A,N);
    73         string b=process(B,N);
    74         int ai=integer(A);
    75         int bi=integer(B);
    76         if(a == b && ai == bi)
    77             cout<<"YES "<<a<<ai<<endl;
    78         else
    79             cout<<"NO "<<a<<ai<<" "<<b<<bi<<endl;
    80     }
    81     return 0;
    82 }
  • 相关阅读:
    SSH 转发学习【转】
    JAVA 垃圾笔记一溜堆
    PHP CURL 伪造IP和来路
    PHP CURL 抓取失败 自己调试
    Tomcat 基本配置
    windows 64位 下 安装 tomcat
    UBUNTU下MONGODB出现PHP Fatal error: Uncaught exception 'MongoConnectionException' with message 和 Authentication failed on database 'admin' with username
    汽车牌牌知识
    一个用pyton写的监控服务端进程的软件hcm
    Python3.x和Python2.x的区别
  • 原文地址:https://www.cnblogs.com/bochen-sam/p/3385632.html
Copyright © 2020-2023  润新知