import java.io.*;
import java.util.*;
import java.math.*;
public class ride {
public static void main(String[] args)throws Exception{
// TODO Auto-generated method stub
String str1;
String str2;
Scanner scan = new Scanner(new FileReader("ride.in"));
PrintWriter cout = new PrintWriter(new BufferedWriter(new FileWriter("ride.out")));
str1 = scan.next();
str2 = scan.next();
BigDecimal res1 = new BigDecimal(1);
BigDecimal res2 = new BigDecimal(1);
int i;
for (i = 0;i < str1.length();++i)
{
res1 = res1.multiply(new BigDecimal(str1.charAt(i) - 64));
}
for (i = 0;i < str2.length();++i)
{
res2 = res2.multiply(new BigDecimal(str2.charAt(i) - 64));
}//求积
if (res1.remainder(new BigDecimal(47)).compareTo(res2.remainder(new BigDecimal(47))) == 0)//比较是否相等
{
cout.println("GO");
}
else
{
cout.println("STAY");
}
cout.close();
scan.close();
System.exit(0);
}
}
这题应该属于数论(同余问题),类型方面就算是不是边乘边mod47也只要一个long就够了(26^6约为3亿多)。上面为我的代码