题意: 给n和一个字符串(可以有空格) 求字符串编码n次后的字符串
编码方式:字符串的每个字符转化成ASCII码, ASCII码转化成8位2进制,
将二进制数分割成6位为一组的(不够的补0), 再变成十进制数 依次按照以下方式变成字母
转化成字母后, 若长度不是4的整数倍, 在字符串后面补=
举个例子, The的ASCII码分别为84,104,101 转成8位2进制为01010100,01101000,01100101
分割成6位的为010101,000110,100001,100101
十进制分别为21,6,33,37
查得表中的字母为VGhl
因此The 编码一次之后是VGhl
虽然题意很麻烦,然而代码很简单~两行就够了
代码:
1 import java.io.*; 2 import java.util.*; 3 import java.math.*; 4 import java.nio.charset.StandardCharsets; 5 6 public class Main 7 { 8 public static void main(String[] args) 9 { 10 Scanner in=new Scanner(System.in); 11 int t, ca=1; 12 t=in.nextInt(); 13 while((t--)!=0) 14 { 15 int n; 16 n=in.nextInt(); 17 String s; 18 s=in.nextLine(); 19 s=s.substring(1); 20 System.out.print("Case #" + ca + ": "); 21 ca++; 22 for(int i=0;i<n;i++) 23 { 24 byte[] tmp=s.getBytes(StandardCharsets.US_ASCII); 25 s=Base64.getEncoder().encodeToString(tmp); 26 } 27 System.out.println(s); 28 } 29 } 30 }