USACO提交与洛谷或jzxx的区别和技巧

oj.jzxx.net 版本
网址:http://oj.jzxx.net/problem.php?id=1228
题解:

#include<iostream>
#include<cstring>
using namespace std;
int main(){
	char star[7],line[7];
	int num_star=1,num_line=1;//定义变量 
	int i,n_star,n_line;
	cin>>star;//输入 
	cin>>line;
	n_star=strlen(star);
	n_line=strlen(line);
	for(i=0; i<n_star; i++)//计算 
		num_star*=(star[i]-64);//数组计算  ‘@’=64 
	for(i=0; i<n_line; i++)
		num_line*=(line[i]-64);
	if(num_star%47==num_line%47)//判断 
		cout<<"GO"<<endl;
	else
		cout<<"STAY"<<endl;
	return 0;//结束 
}

程序运行后是这样的
程序运行后如图

洛谷版本:
网址:https://www.luogu.org/problemnew/show/P1200

题解:

#include<iostream>
#include<cstring> 
#include<cstdio>
using namespace std;
int main(){
    string ride,known;
    int a[8],b[8];
    cin>>ride>>known;
    long s1=1,s2=1;
    for(int i=0;i<=ride.length();i++){//计算  注意i=0 
        a[i]=ride[i]-'@';
        s1=s1*a[i];
    }
    for(int j=0;j<=known.length();j++){//计算 
        b[j]=known[j]-'@';
        s2=s2*b[j];
    }
    if(s1%47==s2%47)	cout<<"GO"<<endl;//判断 s1 mod 47是不是==s2 mod 47 
    if(s1%47!=s2%47)	cout<<"STAY"<<endl;
    return 0;
}

程序运行后是这样的:
在这里插入图片描述

都无法满足USACO这种变态版测试

USACO的满分源代码:

/*
ID: a1s2d1f1
LANG: C++
TASK: ride
*/
#include<iostream>
#include<cstring>
#include<fstream>

using namespace std;
int main()
{
    freopen("ride.in","r",stdin);
    freopen("ride.out","w",stdout);
    char str1[100],str2[100];
    while(cin>>str1>>str2)
    {
         int tmp1=1,tmp2=1;
         for(int i=0;i<strlen(str1);i++)
            tmp1=(tmp1*(str1[i]-'A'+1))%47;
         for(int j=0;j<strlen(str2);j++)
            tmp2=(tmp2*(str2[j]-'A'+1))%47;
         if(tmp1==tmp2)
         {
            cout<<"GO"<<endl;
         }
         else
            cout<<"STAY"<<endl;
    }
  return 0;
}

如果直接用洛谷答案进行提交,会出现下图情况:(已翻译)

在这里插入图片描述

意思就是说提交欠了什么。
解决方法:

在输入第一个头文件前在前面加入一个/* */,里面按照

/*
ID:****(你的用户名)
LANG:(语言)
TASK:(问题)
*/

如图(以your ride is here为例):
在这里插入图片描述

但是如果加进去还是不可以:
USACO需要输入输出文件

freopen("ride.in","r",stdin);
 freopen("ride.out","w",stdout);

需要一个头文件#include<fstream>

接下来,下图是USACO满分代码的输出(没有使用输入输出文件时的exe文件):

在这里插入图片描述

需要重复输出,不管输出多少次。

小技巧:将cin>>n放入while()里变成while(cin>>n)即可

结尾return 0;
否则会出现不必要的麻烦;

最后提一下:尽量不要用万能头(#include<bits/stdc++.h>

如有更多的注意事项,请去官网查找