50分,求解。

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

问题很明显啊,我一测就出来了 你看样例输入,是可以输入1~6个字符的字符串,不一定非得是5个的或者6个的 比如说输入 AB B 也完全可以。所以这边的for循环使用有误
by 天下第一! @ 2017-10-07 11:22:10


@[天下第一!](/space/show?uid=54101) #include<iostream> ```cpp using namespace std; int main(){ char xiaozu[7],feidie[7],suma=0,sumb=0; long long xiaozuji=1,feidieji=1; for(int i=1;i<=6;i++){ cin>>feidie[i]; if(feidie[i]<65||feidie[i]>90)break; else suma+=1; } for(int i=1;i<=6;i++){ cin>>xiaozu[i]; if(xiaozu[i]<65||xiaozu[i]>90)break; else sumb+=1; } for(int i=1;i<=suma;i++){ feidieji=feidieji*(feidie[i]-64); } for(int i=1;i<=sumb;i++){ xiaozuji=xiaozuji*(xiaozu[i]-64); } if((xiaozuji%47)==(feidieji%47))cout<<"GO"; else cout<<"STAY"; return 0; } 能帮我看一下吗,60分? ```
by UKE自动机 @ 2017-10-07 11:23:21


我给你换一个for循环: 首先是int len1=strlen(yhy1) int len2=strlen(yhy2) 这两个是计算两个字符串分别的长度,这样就不会搞错 for(int i=1;i<=len1;i++)…… for(int i=1;i<=len2;i++)…… 附上我自己的正解: ```cpp #include<bits/stdc++.h> using namespace std; char s1[100],s2[100]; int main(){ int ss1=1,ss2=1; cin>>s1>>s2; int len1=strlen(s1),len2=strlen(s2); for(int i=0;i<len1;i++){ ss1*=s1[i]-64; } for(int i=0;i<len2;i++){ ss2*=s2[i]-64; } int ssr1=ss1%47,ssr2=ss2%47; if(ssr1==ssr2){ cout<<"GO"<<endl; } else{ cout<<"STAY"<<endl; } return 0; } ```
by 天下第一! @ 2017-10-07 11:26:15


@[jiangzizhan0508](/space/show?uid=51171) 这个题解我帮你测试一下,等会
by 天下第一! @ 2017-10-07 11:26:49


@[jiangzizhan0508](/space/show?uid=51171) 跟他的问题一模一样,不能只能是6个长度的字符串,要测试他的长度有多少来下定义。题解参照上面我给楼主的题解自己修改一下。
by 天下第一! @ 2017-10-07 11:28:17


@[天下第一!](/space/show?uid=54101) 好的,谢谢!我想到过这个问题,以为改掉了
by UKE自动机 @ 2017-10-07 11:30:07


@[天下第一!](/space/show?uid=54101) 我不太懂字符串
by UKE自动机 @ 2017-10-07 11:30:39


@[jiangzizhan0508](/space/show?uid=51171) strlen(x)就是x这个字符串的长度。不用谢。(我也是个蒟蒻)(手动滑稽)
by 天下第一! @ 2017-10-07 11:32:57


唔、 本蒟蒻用pas写的(太久之前的题目了)
by VenusM1nT @ 2017-10-07 13:23:08


我用Pascal语言写的,能告诉我为什么只有50分吗? ```cpp var b:array['A'..'Z'] of longint; a:array[1..2] of longint; i,j:longint; ch:string; begin a[1]:=1; a[2]:=1; for i:=1 to 26 do b[chr(i+64)]:=i; for i:=1 to 2 do begin readln(ch); for j:=1 to length(ch) do a[i]:=a[i]*b[ch[j]] mod 47; end; if a[1]=a[2] then writeln('Go') else writeln('STAY'); end. ```
by 国服最强关羽 @ 2017-10-21 20:47:56


|