简单说一下题意,就是任给两个字符串,分别算出两个字符串中每个字母对应数字乘积,再各自模47,若取模后值相等,则返回GO,否则返回STAY。
下面是C++实现
/*
ID: imzheng1
PROG: ride
LANG: C++
*/
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main() {
ofstream fout("ride.out");
ifstream fin("ride.in");
string s1, s2;
int product1 = 1;
int product2 = 1;
fin >> s1 >> s2;
for (int i = 0; i < s1.size(); ++i) {
product1 *= (s1[i] - 'A' + 1);
}
for (int i = 0; i < s2.size(); ++i) {
product2 *= (s2[i] - 'A' + 1);
}
if (product1 % 47 == product2 % 47) {
fout << "GO" << endl;
} else {
fout << "STAY" << endl;
}
return 0;
}
下面是Java实现
/*
ID: imzheng1
LANG: JAVA
TASK: ride
*/
import java.io.*;
import java.util.*;
public class ride {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new FileReader("ride.in"));
PrintWriter writer = new PrintWriter(new BufferedWriter(new FileWriter("ride.out")));
String s1 = reader.readLine();
String s2 = reader.readLine();
int product1 = 1;
int product2 = 1;
for(int i = 0; i < s1.length(); ++i) {
product1 *= s1.charAt(i) - 'A' + 1;
}
for(int i = 0; i < s2.length(); ++i) {
product2 *= s2.charAt(i) - 'A' + 1;
}
if (product1 % 47 == product2 % 47) {
writer.println("GO");
} else {
writer.println("STAY");
}
writer.close();
}
}
USACO推荐使用StringToken的包装下读取数据,但是按照USACO示例方式读取文件会报空Token的错,必须在StringToken中指定读取分割符,为了减少麻烦,还是直接reader.readLine()吧