X-man

导航

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。

posted on 2014-07-29 19:11  雨钝风轻  阅读(167)  评论(0编辑  收藏  举报