hdu5059

来源:互联网 发布:ubuntu 查看重启日志 编辑:程序博客网 时间:2024/06/05 18:42

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

本题是水题,可是陷阱比较多,应该注意的是

1.该字符串可以是空集

2.-0是wrong的

3.注意取值范围,就可以确定加入是YES的话,那么他的字符串长度一定是小于12的(因为对于负数有11位的可能)

因此,code

#include<stdio.h>#include<climits>#include<algorithm>#include<stack>#include<iostream>#include<cmath>#include<set>#include<vector>#include<map>#include<queue>#include<string.h>using namespace std;char s[110]; int  main(void){     long long len,i,wr,sum,a,b;  while(gets(s))  {         scanf("%I64d %I64d",&a,&b);         getchar();        len=strlen(s);         if(len>11||len<1)         {        printf("NO\n");        continue;     }     if(s[0]=='-')     {    if(len==1)    {        printf("NO\n");        continue;      }      if(s[1]=='0')      {  printf("NO\n");        continue;       }   wr=0;   for(i=1;i<len;i++)   {           if(s[i]<'0'||s[i]>'9')           {wr=1;break;      }        }        if(wr) {                printf("NO\n");                continue;              }             sum=0;              for(i=1;i<len;i++)              {               sum=sum*10+s[i]-'0';          }          sum=0-sum;          if(sum>=a&&sum<=b)          {                 printf("YES\n");             }             else printf("NO\n");             }     else     {          if(len>1&&s[0]=='0')          { printf("NO\n"); continue;    }    wr=0;    for(i=0;i<len;i++)    {     if(s[i]<'0'||s[i]>'9')     {   wr=1;   break;        } } if(wr) {            printf("NO\n");            continue;          }          sum=0;          for(i=0;i<len;i++)          {         sum=sum*10+s[i]-'0';      }      if(sum>=a&&sum<=b)      {    printf("YES\n");         }         else printf("NO\n"); }      }  return 0;}

继续努力吧,KEEP IT ON

0 0
原创粉丝点击