zoukankan      html  css  js  c++  java
  • HDU 5059 Help him(简单模拟题)

    http://acm.hdu.edu.cn/showproblem.php?pid=5059

    题目大意:

      给定一个字符串,如果这个字符串是一个整数,并且这个整数在[a,b]的范围之内(包括a,b),那就输出YES,其它的都是NO。

    这个字符串是整数的条件:

    1、如果它是正整数,它只包含前导不是0的数(这个数前面没有零)。

    2、如果它是负整数,只包含一个'-'符号,任然没有前导0。

    3、除此之外都不是非法的

    解题思路:

    http://bestcoder.hdu.edu.cn/ 这里有

    要注意:

    00

    01

    -

    -0

    -01

    1 2

    这些都是非法的

    我一直错,原因是我没有考虑给定整数的大小。

    它给定的字符串的长度不超过100。但是ab的范围是[-10^9,10^9],所以如果字符串长度超过10位,就一定是NO。

    可是我当我把长度改10,11时都是wrong,改成13就对了。结题报告是12位。可能是它测试数据超过了10^9,总之按他解题报告,坑定能A的。

    AC代码:

     1 #include<stdio.h>
     2 #include<string.h>
     3 
     4 typedef __int64 LL;
     5 
     6 int main(){
     7     char str[102];
     8     LL a, b;
     9     while(gets(str)){
    10         scanf("%I64d%I64d", &a, &b);
    11         bool flag = 0;
    12         int len = strlen(str);
    13         if(len == 0 || len >= 13){//如果长度大于13 如果长度为0 那么肯定是NO
    14             flag = 1;
    15         }
    16         LL num = 0;
    17         if(!flag){
    18             int i = 0;
    19             bool sign = 0;
    20             if(str[0] == '-'){//先判断第一个是'-'
    21                 sign = 1;
    22                 ++i;
    23             }
    24             for( ; i < len; ++i){
    25                 if(str[i] < '0' || '9' < str[i]){//非法的字符
    26                     flag = 1;
    27                     break;
    28                 }
    29                 if(!num && str[i] == '0' && len > 1){//判断前导0
    30                     flag = 1;
    31                     break;
    32                 }
    33                 num = num * 10 + str[i] - '0';
    34             }
    35             if(!flag){//是否含有非法字符
    36                 if(sign && !num){//-0 考虑这种情况
    37                     flag = 1;
    38                 }else if(sign){//是负数
    39                     num = -num;
    40                 }
    41             }
    42         }
    43 
    44         if(!flag && a <= num && num <= b){
    45             puts("YES");
    46         }else{
    47             puts("NO");
    48         }
    49         getchar();//这里注意 因为用的事gets 所以要吃掉一个回车
    50     }
    51     return 0;
    52 }
  • 相关阅读:
    GDI+学习之------色彩与图像
    2015小米暑期实习笔试题_懂二进制(位运算)
    拷贝构造函数和赋值函数
    HDU
    react-router中,<switch>
    Navicat for MySQL
    maven项目创建3 (依赖版本冲突)
    maven项目创建2
    maven项目创建
    Eclipse 开发环境修改及MAVEN配置
  • 原文地址:https://www.cnblogs.com/xuqiulin/p/4010363.html
Copyright © 2011-2022 走看看