首页 > 代码库 > hdu 4891---水题 但是WA了很多次
hdu 4891---水题 但是WA了很多次
这道题的坑在----过程中即使使用long long 也会超出范围
自己看了很久读了很多遍题还是没想到
记得当时的想法是----反正我用了long long 已经是最大的范围了,肯定没法用更大的类型--即使unsigned也只是 比long long 大一倍,现在回头看,这种想法太唯心,不是理性分析的结果啊,,
代码:
//1005 #include <cstdio> #include <cstring> #include <algorithm> #include <cstdlib> #include <iostream> using namespace std; #define ll long long const 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; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。