USACO 第一题,我哪里挫了

来源:百度知道 编辑:UC知道 时间:2024/06/02 08:00:53
我写的程序

program ddd;
var
a,b:string;
d,e,f,g,i,k:LONGINT;
begin
read(a,b);
d:=1;
e:=1;
BEGIN
for i:=1 to 6 do
d:=(ord(a[i])-64)*d;
e:=(ord(b[i])-64)*e;
END;
if d mod 47=e
then write('GO')
else write('STAY');
END.

哪里挫了?为什么E始终为?

还有USACO的写题目格式是什么啊?
pascal的程序 格式问题我自己知道! 现在我问的是程序,不是格式什么东西啊。我程序有问题,我自己如果输出d,或者e的值,得到的结果都不对!

看程序,别管那么多USACO格式!

你题意理解错了.

问题里是说字符串的长度为1~6不等,因此不能直接写为for i:=1 to 6 do ...

其次,你的输入输出都有问题.

字符串的读入不可以使用read过程,必须使用readln过程,并且需要分别readln两个字符串.

并且,USACO要求你使用文件输入输出,并且必须在输出之后换行.

修改后的程序如下:

{
ID:这里是你的ID
PROG:ride
LANG:PASCAL
}
program ddd;
var
a,b:string;
d,e,f,g,i,k:LONGINT;
begin
assign(input,'ride.in');
reset(input);
assign(output,'ride.out');
rewrite(output);
readln(a);readln(b);
d:=1;
e:=1;
for i:=1 to length(a) do
d:=(ord(a[i])-64)*d;
for i:=1 to length(b) do
e:=(ord(b[i])-64)*e;
if d mod 47=e
then writeln('GO')
else writeln('STAY');
close(input);close(output);
END.

先讨论格式问题,不管题目本身的正确或者错误。

首先,文件头需要:
{
ID:[这里写你的ID]
PROB:[这里写题目名,比如usaco第一题好像是ride(记不清了)]
LANG:PASCAL
}
第二,usaco要用文件输入输出
第三,输出最后必须有换行,所以应该用writel