A题 转换AV号(avtobv)

A题  转换AV号(avtobv)
Description
最近某视频网站将使用已久的 av 视频编号升级成了新的 bv 号,新的编号扩充了编号的字符集,增加了编号的数量。
你是网站的忠实用户,这次升级迫使你将收藏的视频 av 号重新换算成 bv 号以便观看。由于原始算法比较复杂,我们将算法简化如下:
av 号以av开头,之后跟随一串数字,例如av84735341;而 bv 号以BV开头,之后跟随一串数字和字母,例如BV1i7411a794。
首先,需要将 av 号中的正整数nn异或上一个较大的正整数XX,再对其进行编码,得到编码后的串SS,最后在SS开头添加BV前缀即可。
这里所使用的编码是指把一个整数转换成一个 62 进制数,并用编码表中指定的每一位代表的符号作为该位的字符,构成编码后的串。
你的收藏中有nn个 av 号,每个 av 号都符合上面的格式。现在你已经获得了异或的正整数XX和编码的编码表(每次使用的XX和编码表可能不同),请你将 av 号转换为 bv 号并输出。
你可以参考样例解释来帮助理解上面的流程。
注:题目纯属虚构,上述算法不一定与真实情况中的编码算法相同。
Input
第一行包含两个正整数 n (1≤n≤10^4 ) 和 X (1≤X≤10^18 ),代表 av 号的数量和异或的值。第二行包含一个长为 62 的字符串 T,T​    
表示编码时某一位的十进制数值为 i 时对应的编码字符。T 仅包含英文字母及数字。接下来 n 行每行包含一个字符串,分别为要转换的 av 号串,长度不超过 11。
Output
输出 n 行,每行为转换后得到的 bv 号。
Sample Input 1
5 10
0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
av1
av2
av314
av17001
av84735341

Sample Output 1
BVb
BV8
BV4U
BV4q7
BV5JxwX

 #include<stdio.h>
 #include<string.h>
 int main()
 {
 	int n,i,j,m;
 	long long a,x;
 	char b[63];
 	scanf("%d %d",&n,&x);
 	scanf("%s",&b[i]);
    getchar();
	for(i=0;i<n;i++)
	{
		int c[100000];
		j=0;
		getchar();
		getchar();
		scanf("%d",&a);
		getchar();
		a=a^x;
		while(a)
		{
			int a1=a%62;
			a=a/62;
			c[j]=a1;
			j++;
		}
		printf("BV");
		for(j=j-1;j>=0;j--)
		  {
		  	a=c[j];
		  printf("%c",b[a]);
	      }
	      getchar();
	}
 }
 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值