https://www.luogu.org/problemnew/show/P5000
第一次写一个正经的高精度题。
很明显ASCII码的乘积绝对是溢出的。
那么直接上Java。正好学一手Java的字符串处理。
Java的字符串String有toCharArray方法,也可以传入char[]数组直接构造。
import java.util.*; import java.math.*; public class Main { public static void main(String args[]) { Scanner sc=new Scanner(System.in); int n=sc.nextInt(),r=sc.nextInt(); while(n-->0) { String s=sc.next(); BigInteger b; s=change(s,r); b=count(s); System.out.println(s); System.out.println(b); } sc.close(); } public static String change(String s,int r) { char ch[]=s.toCharArray(); int l=s.length(); for(int i=0;i<l;i++) { ch[i]=(char) ((ch[i]-'A'+r)%26+'A'); } return new String(ch); } public static BigInteger count(String s) { BigInteger b=BigInteger.ONE; char ch[]=s.toCharArray(); int l=s.length(); for(int i=0;i<l;i++) { b=b.multiply(BigInteger.valueOf(ch[i])); } return b; } }