zoukankan      html  css  js  c++  java
  • HDU 5059 Help him

    题解:先判断第一个是否负号。如果是把第一个符号拿掉之后判断后面的长度是否<=12,并且是否数字,然后转化成数字看看是否在[a,b],注意-0这个数据。

    如果不是判断长度是否<=12,并且是否数字,然后转化成数字看看是否在[a,b]。
    #include <cstdio>
    #include <cstring>
    char s[150],ss[150];
    int A,B;
    long long a,b;
    using namespace std;
    int main(){
        while((gets(s)!=NULL)&&(~scanf("%d%d",&B,&A))){
            a=A,b=B;
            gets(ss);
            int l=strlen(s),flag=1;
            if(l>11||l==0){puts("NO");continue;}
            for(int i=1;i<l;i++)if(s[i]<'0'||s[i]>'9'){puts("NO");flag=0;break;}
            if(flag){
                int flag1=1;
                long long ans=0;
                if(l==1){
                    if(s[0]<'0'||s[0]>'9'){puts("NO");continue;}
                    int now=s[0]-'0';
                    if(now>=b&&now<=a)puts("YES");else puts("NO");
                    continue;
                }
                if(s[0]=='-')flag1=0;
                else if(s[0]<'0'||s[0]>'9'){puts("NO");continue;}
                if(flag1&&s[0]=='0'){puts("NO");continue;}
                if(!flag1&&s[1]=='0'){puts("NO");continue;}
                if(flag1)for(int i=0;i<l;i++)ans=ans*10LL+s[i]-'0';
                else{for(int i=1;i<l;i++)ans=ans*10LL+s[i]-'0';ans=-ans;}
                if(ans>=b&&ans<=a)puts("YES");else puts("NO");
            }
        }return 0;
    }
    //注意单个的符号和0,还有计算中超过了int的问题
    
  • 相关阅读:
    《leetcode42接雨水》
    《84. 柱状图中最大的矩形》
    [bzoj1565][NOI2009]植物大战僵尸
    [bzoj1497][NOI2006]最大获利
    [洛谷P4092][HEOI2016/TJOI2016]树
    [洛谷P3760][TJOI2017]异或和
    [洛谷P3758][TJOI2017]可乐
    [洛谷P3761][TJOI2017]城市
    [Uva11134]Fabled Rooks
    又是一年叶落时
  • 原文地址:https://www.cnblogs.com/forever97/p/4024531.html
Copyright © 2011-2022 走看看