设为首页 加入收藏

TOP

HDU 4891 The Great Pan
2015-07-20 18:02:12 来源: 作者: 【 】 浏览:4
Tags:HDU 4891 The Great Pan


好无奈的多校啊!!!!!!看着这么复杂的签到题,在前面四个小时都是无视掉的。。。。。。。

题意很难懂有木有!!!!!!!

就是输入一串很长的文章,具体多长我也不清楚!!!判断它有几个意思!!!!

其中有两种情况造成它有多种意思!!!

一、{A|B|C},表示这句话要么是A的意思,要么是B的意思,要么是C的意思,题目保证不会出现相同的意思,

那么这个就比较好操作,就是统计{}里面有多少个“|”就可以了,意思的种类就是“|”数目加1。

二、$ c a b $,这句话主要是受到空格的影响导致多种意思,其中有连续多个空格时,不同数量的空格也会造成不同的意思!所以又一个空格就会产生2种意思,两个就会产生3种,以此下去,最后垒乘就行了,其中“\n”不影响空格的连续!!!!

题意懂了,这题就不是很难了,是个复杂点的字符串处理。

由于不清楚输入,我用的是getchar输入。



AC代码如下:


#include
  
   
#include
   
     #include
    
      #define ll long long using namespace std; int main() { ll n; char c; while(~scanf("%I64d",&n)) { ll dk=0,flag=0,bbj=0; ll last1=1,suml,summ,last2=1,bj; getchar(); for(ll i=0;i
     
      100000) bbj=1; } if(c=='$'&&flag==0) {flag=1;summ=0;continue;} if(flag==1) { if(c==' '&&bj==0) {summ=1;bj=1;} else if(c==' '&&bj==1) { summ++; } if(c!=' '&&c!='\n') { last2=last2*(summ+1); summ=0;bj=0; } if(last2>100000) bbj=1; } if(flag==1&&c=='$') flag=0; } } if(bbj) printf("doge\n"); else { ll ans = last1 * last2 ; if(ans>100000) printf("doge\n"); else printf("%I64d\n",ans); } } return 0; }
     
    
   
  


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇HDU 4891 The Great Pan(模拟) 下一篇codeforces 17A Noldbach problem

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: