洛谷

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;
    }
}
原文地址:https://www.cnblogs.com/Yinku/p/10660461.html