赛氪2020上半年 A.转换AV号(avtobv)[神奇的输入][神奇的getchar()][进制转换]
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≤104)n (1≤n≤104) 和 X (1≤X≤1018)X (1≤X≤1018),代表 av 号的数量和异或的值。
第二行包含一个长为 62 的字符串 TT,TiTi 表示编码时某一位的十进制数值为 ii 时对应的编码字符。TT 仅包含英文字母及数字。
接下来 nn 行每行包含一个字符串,分别为要转换的 av 号串,长度不超过 11。
Output
输出 nn 行,每行为转换后得到的 bv 号。
Sample Input 1
5 10 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ av1 av2 av314 av17001 av84735341
Sample Output 1
BVb BV8 BV4U BV4q7 BV5JxwX
Hint
以av17001
为例,首先将 17001 与 10 异或,得到 16995,然后将 16995 转换成 62 进制,即 4 26 7,根据编码表可以查到 4 对应 4、26 对应 q、7 对应 7,因此 bv 号为BV4q7
。
就很奇怪就很bad,不加这两个奇怪的getchar()就会wrong answer,加了以后就过了
scanf()原来还能这样用,直接在前面输入av,然后直接用long long的形式输入av后面的数字,就很厉害
// gcd lcm有理数
// main.cpp
// 猫猫头
//
// Created by Mintink on 2020/1/12.
// Copyright © 2020 Mintink. All rights reserved.
//#include<iostream>
#include<string.h>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<iomanip>
#include<set>
#include<numeric>
#include<vector>
#include<queue>
#include<array>
#include <stdlib.h>
#include <stdio.h>
#include<cstdio>
#define _USE_MATH_DEFINES
using namespace std;
typedef long long ll;
#define inf 0x3f3f3f3f
//tuple<int,string,int>p[55];
//pair<int,string>male[55],female[55];
int main()
{int n;ll X;cin>>n>>X;string s;cin>>s;getchar();while(n>0){ll nu;scanf("av%lld",&nu);getchar();nu=nu^X;string bv;int init=0;while(nu>0){bv[init++]=s[nu%62];nu/=62;}cout<<"BV";for(int i=init-1;i>=0;i--){cout<<bv[i];}cout<<endl;n--;}return 0;
}
赛氪2020上半年 A.转换AV号(avtobv)[神奇的输入][神奇的getchar()][进制转换]相关推荐
- ipc4 - A 转换AV号(avtobv)
A 转换AV号(avtobv) Description 最近某视频网站将使用已久的 av 视频编号升级成了新的 bv 号,新的编号扩充了编号的字符集,增加了编号的数量. 你是网站的忠实用户,这次升级迫 ...
- A题 转换AV号(avtobv)
A题 转换AV号(avtobv) Description 最近某视频网站将使用已久的 av 视频编号升级成了新的 bv 号,新的编号扩充了编号的字符集,增加了编号的数量. 你是网站的忠实用户,这次升 ...
- python 进制转换 递归_python--使用递归优雅实现列表相加和进制转换
咦,好像坚持了一段时间,感觉又有新收获啦. # coding: utf-8 class Stack: def __init__(self): self.items = [] # 是否为空 def is ...
- 更强更方便的进制转换工具
最近,我仿照https://blog.csdn.net/Eyizoha/article/details/94897931?locationNum=9&fps=1上的2-36进制转换的代码做出了 ...
- 单片机进制转换实现(报告+源码)
用4x4矩阵及LCD1602液晶显示实现各进制转换 摘要:在计算机及其相关的各领域中,数制的二进制.八进制.十进制和十六进制之间的相互转换可谓无处不在.为满足相关领域人员对进制转换计算的需求,特此利用 ...
- 计算机教育的进制转换,计算机数制及编码进制转换公开课教学教育资料.doc
计算机数制及编码进制转换公开课教学教育资料.doc 数制与编码进制转换[学情分析]本课内容是在学生已经学习了计算机发展与应用.计算机系统的组成等知识的基础上进行,已经初步知道了人与计算机进行信息交换通 ...
- JSK-384 进制转换【入门】
进制转换 输入一个十进制正整数,然后输出它所对应的八进制数. 输入格式 输入一个十进制正整数 n(1≤n≤10^6) . 输出格式 输出 n 对应的八进制数,输出在一行. 样例输入 10 样例输出 1 ...
- 各种进制转换(二,八,十,十六进制间转换)详解附代码
进制转换 原理 进制转换是人们利用符号来计数的方法.进制转换由一组数码符号和两个基本因素"基数"与"位权"构成. 基数是指,进位计数制中所采用的数码(数制中用来 ...
- 植物大战僵尸 进制转换 使用JAVA 更改关卡 和金钱
文章目录 前言 一.进制转换 将二进制.八进制.十六进制转换为十进制 将二进制.八进制.十六进制转换为十进制 二.获取数据修改关卡 小技巧进制转换 三.获取数据修改阳光 四.通过编码修改关卡和金钱 修 ...
最新文章
- 2021 CSDN年度回忆录
- Poisson Surface Reconstruction
- linux命令less
- iOS官方Sample大全
- wxWidgets:wxStdInputStreamBuffer类用法
- struts.preperties说明
- js中的鼠标滚轮事件
- Android中View绘制流程
- 【离散化】【DP】命运石之门的选择
- 怎么计算末年某月某天有几个星期天公司
- 补习系列(7)-springboot 实现拦截的五种姿势
- Python编程利用单纯形法和scipy库对比分析求解线性规划最大值和最优解问题
- 移动前端开发和 Web 前端开发的区别是什么?
- Mysql调优(updating~)
- base64在线解码(等号或者双等号结尾的数据的解码)
- Verilog语言之结构语句:if、case
- 【OptiX】第6个示例 折射,玻璃材质
- 怎样学好编程(个人编程感受)!
- js数组array的常用方法
- 51、基于51单片机的GPS定位系统(GSM短信)
热门文章
- 小身躯,大志向,宇通智能巴士有哪些黑科技
- Houdini使用Mantra渲染景深通过Nuke合成
- 【PS教程】旧照片修复技巧
- 有哪些微信小程序值得推荐?
- 小米2017校招面试经历
- 嵌入式linux 竖屏,嵌入式Linux下竖屏显示配置
- docker系统中/var/lib/docker/overlay2
- Kotlin 找素数/质数
- bzoj2668 [cqoi2012]交换棋子
- java.lang.RuntimeException: Performing stop of activity that is not resumed OOM了也会造成之前Activity被系统杀掉