[java]2015上海邀请赛 B Base64

题意: 给n和一个字符串(可以有空格) 求字符串编码n次后的字符串

   编码方式:字符串的每个字符转化成ASCII码, ASCII码转化成8位2进制,

      将二进制数分割成6位为一组的(不够的补0), 再变成十进制数 依次按照以下方式变成字母

[java]2015上海邀请赛 B Base64

   转化成字母后, 若长度不是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

上一篇:【码在江湖】前端少侠的json故事(上)日月第一击


下一篇:反比例函数