首页 > 代码库 > hdu 4891 The Great Pan

hdu 4891 The Great Pan

#include<stdio.h>#include<string>#include<string.h>#include<iostream>using namespace std;string s;char tmp[2000000];int main(){    int snum;//s    int lnum;//{    int n;    int i,j;    __int64 ans;    while(scanf("%d",&n)!=EOF)    {        snum=0;        lnum=0;        ans=1;        s.clear();        getchar();        while(n--)        {            cin.getline(tmp,2000000);//会超时            gets(tmp);            s+=tmp;        }        //cout<<s<<endl;        for(i=0; i<s.length(); i++)        {            if(s[i]=={)            {                i++;                while(i<s.length()&&s[i]!=})                {                    if(s[i]==|)                    {                        snum++;                    }                    i++;                    if(ans*(snum+1)>100000)break;                }                ans*=(snum+1);                snum=0;//容易忽略                if(ans>100000)break;                //printf("#%d\n",snum);            }        }        for(i=0; i<s.length(); i++)        {            if(s[i]==$)            {                i++;                while(i<s.length()&&s[i]!=$)                {                    if(s[i]== )                        lnum++;                    else                    {                        ans*=(lnum+1);                        lnum=0;                    }                    i++;                    if(ans*(lnum+1)>100000)break;                }                ans*=(lnum+1);                lnum=0;//容易忽略                if(ans>100000)break;            }        }        if(ans>100000)printf("doge\n");        else printf("%I64d\n",ans);    }    //printf();    return 0;}

1.

$$之间每出现连续的n个空格,乘以n+1;

{|}计算|的个数为n,乘以n+1。