题意: 给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
虽然题意很麻烦,然而代码很简单~两行就够了
代码:
import java.io.*;
import java.util.*;
import java.math.*;
import java.nio.charset.StandardCharsets; public class Main
{
public static void main(String[] args)
{
Scanner in=new Scanner(System.in);
int t, ca=1;
t=in.nextInt();
while((t--)!=0)
{
int n;
n=in.nextInt();
String s;
s=in.nextLine();
s=s.substring(1);
System.out.print("Case #" + ca + ": ");
ca++;
for(int i=0;i<n;i++)
{
byte[] tmp=s.getBytes(StandardCharsets.US_ASCII);
s=Base64.getEncoder().encodeToString(tmp);
}
System.out.println(s);
}
}
}
Base64