USACO第一题Your ride is here 为什么我的程序错了。。PASCAL的 5

ID:yangchao'sprogramPROG:rideLANG:PASCALprogramride(input,output);vars:string[6];a,b,... ID:yangchao's program
PROG:ride
LANG:PASCAL
program ride(input,output);
var
s:string[6];
a,b,c:longint;
begin
assign(input,'ride.in');
reset(input);
assign(output,'ride.out');
rewrite(output);
readln(s);
b:=1;
c:=1;
for a:=1 to length(s) do begin
b:=b * (ord(s[a]) - 64);
end;
readln(s);
for a:=1 to length(s) do begin
c:=c * (ord(s[a]) - 64);
end;
if (c mod 47) =(b mod 47) then
writeln('GO')
else
writeln('STAY');
close(input);
close(output);
end.
展开
 我来答
hxy_anhui
2012-12-07 · TA获得超过152个赞
知道答主
回答量:153
采纳率:0%
帮助的人:66.9万
展开全部
yjw40的话比较正确,本题数据范围适中,longint足够解决,但要取余
若还不行的话, s:string[6];

试着改成string
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
paykka
2025-08-05 广告
Paykka 适合有全球贸易需求的企业或个人使用,特别是那些涉及东南亚地区交易、需要高效收款和结算的用户,以及有小额支付需求的商家。它能满足这些用户在跨境交易中的各种支付需求。... 点击进入详情页
本回答由paykka提供
jsnjzhaoxy
2013-02-06 · TA获得超过1323个赞
知道小有建树答主
回答量:611
采纳率:0%
帮助的人:211万
展开全部
范围小了
试试这个吧

Var s1,s2:string;
l1,l2,i,ss1,ss2:longint;
Begin
assign(input,'ride.in');
reset(input);
assign(output,'ride.out');
rewrite(output);
readln(s1);
readln(s2);
l1:=length(s1);
l2:=length(s2);
ss1:=1;
For i:=1 to l1 do ss1:=(ss1*(ord(s1[i])-64))mod 47;
ss2:=1;
For i:=1 to l2 do ss2:=(ss2*(ord(s2[i])-64))mod 47;
if ss1=ss2 Then writeln('GO') else writeln('STAY');
close(input);
close(output);
End.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yjw40
2012-12-01 · TA获得超过599个赞
知道小有建树答主
回答量:513
采纳率:100%
帮助的人:234万
展开全部
范围不够,你看一看数据范围就知道了,变量b和c这样一直乘下去,肯定要超过longint范围的,建议你把两个for循环里的b:=b*(ord(s[a])-64)和c:=c*(ord(s[a])-64)改成b:=b*(ord(s[a])-46) mod 47和c:=c*(ord(s[a])-64) mod 47,这样应该对了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式