自爆魂

博客园 首页 新随笔 联系 订阅 管理

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

确定输入的数是否在(a,b)内

简单字符串处理

#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <string>
#include <queue>
#include <set>
#include <iostream>
#include <algorithm>
using namespace std;
#define RD(x) scanf("%d",&x)
#define RD2(x,y) scanf("%d%d",&x,&y)
#define clr0(x) memset(x,0,sizeof(x))
typedef long long LL;
char s[1005];
LL a,b;
bool check()
{
    int n = strlen(s);
    int flag = 0;
    for(int i = 0;i < n;++i){
        if(s[i] == '-'){
            if(i != 0 || n == 1)
                return false;
        }
        else if(s[i] == '0'){
            if(flag == 0)
                return false;
        }
        else if(s[i] >= '1' && s[i] <= '9'){
            flag++;
        }
        else
            return false;
    }
    return true;
}
LL get()
{
    int n = strlen(s);
    if(n > 11 || n == 0)
        return b + 1;
    LL res = 0;
    for(int i = 0;i < n;++i){
        if(s[i] == '-')continue;
        res = res*10LL + s[i] - '0';
    }
    if(s[0] == '-')
        res = -res;
    return res;
}
void work()
{
    scanf("%I64d%I64d",&a,&b);
    getchar();
    if(check() || strcmp(s,"0") == 0){
        LL ss = get();
        if(ss >= a && ss <= b)
            puts("YES");
        else
            puts("NO");
    }
    else
        puts("NO");


    return ;
}
int main(){
    while(gets(s)){
        work();
    }
    return 0;
 }


posted on 2014-10-13 21:40  自爆魂  阅读(137)  评论(0编辑  收藏  举报