求大神帮助,为啥50啊

P1200 [USACO1.1] 你的飞碟在这儿 Your Ride Is Here

易楷为?
by CraZYali @ 2016-07-04 17:43:19


甚么鬼,我根本看不懂
by CraZYali @ 2016-07-04 17:44:02


这是我的: ```cpp #include<iostream> #include<cstring> #include<cstdio> using namespace std; int main(){ char a[10],b[10]; long long i,c=1,d=1; gets(a);gets(b); for(i=0;a[i]!='\0';i++) c*=(int)a[i]-64; for(i=0;b[i]!='\0';i++) d*=(int)b[i]-64; if((c%47)==(d%47)) cout<<"GO"; else cout<<"STAY"; return 0; } ```
by CraZYali @ 2016-07-04 17:44:46


易楷为,确实学了很多东西哦。 但你的程序能得50分我很惊讶, 因为你的程序本该只有0分, 输入后直接报错。 原因:因为c字符数组只能容纳5个字符(char a[i+1]只能容纳i个字符),爆数组会报错 其次是c[i]不是c[j],数组下标里有未知数会直接报错 有两处==打成=,会造成输出错误或者陷入死循环 以及最后m=k写成k=m,同上 然后回车也是一个字符,你的输入方法会把回车读入,造成输出错误。推荐使用gets 注意:定义任何形式的数组一定要确定初始值,包括全部为0。 有些关于求余的最好算一步求一步余(不然容易爆)
by lzr20040310 @ 2016-07-04 20:37:43


|