hdu 4891---水题 但是WA了很多次

来源:互联网 发布:剑侠情缘3捏脸数据女 编辑:程序博客网 时间:2024/05/16 19:23

这道题的坑在----过程中即使使用long  long 也会超出范围

自己看了很久读了很多遍题还是没想到

记得当时的想法是----反正我用了long long 已经是最大的范围了,肯定没法用更大的类型--即使unsigned也只是 比long long 大一倍,现在回头看,这种想法太唯心,不是理性分析的结果啊,,

代码:


//1005#include <cstdio>#include <cstring>#include <algorithm>#include <cstdlib>#include <iostream>using namespace std;#define ll long longconst ll lim=1e5;int main(){    //freopen("hdu1005.txt","r",stdin);    ll cnt,ans,kr,sp,n;    char c;    int last;    bool flag=0;    while(~scanf("%I64d",&n))    {        flag=0;        getchar();        cnt=kr=sp=0;        ans=1;        while(1)        {            c=getchar();            if(c == '\n')cnt++;            if(cnt>=n  || c==EOF)break;            //{}            if(c == '$')            {                kr=last=0;                while(1)                {                    c=getchar();                    if(c == '\n'){cnt++;if(kr)last=1;continue;}                    if(c == ' ')kr++;                    //if(c != ' ' && c == '\n')conti                    if(c != ' ' && kr){if(ans>lim)flag=1;ans*=(kr+1);kr=0;}                    if(c == '$')break;                }                if(c != ' ' && kr){if(ans>lim)flag=1;ans*=(kr+1);kr=0;}                ////            }            if(c == '{')            {                sp=0;                while(1)                {                    c=getchar();                    if(c == '\n'){cnt++;}                    if(c == '|'){sp++;}                    if(c == '}')break;                }                if(ans>lim)flag=1;                ans*=(sp+1);                sp=0;            }        }        if(ans>lim||flag)printf("doge\n");        else  printf("%I64d\n",ans);    }    return 0;}


0 0
原创粉丝点击