BV-AV
BV转AV——bilibili
按着题目要求来就行了——U111425
#include <cstdio>
#include <string>
#include <cmath>
unsigned long long nun[12];
char ch[12];
int diff[29] = {-1,0,0,1,0,0,1,0,0,1,1,0,0,1,1,0,1,1,1,0,0,1,0,0,1,0,1,0,1};
void Change_1(){
for(int i = 2; i < 13; i++)
{
if(ch[i] == '1') nun[i] = 13;
if(ch[i] == '2') nun[i] = 12;
if(ch[i] == '3') nun[i] = 46;
if(ch[i] == '4') nun[i] = 31;
if(ch[i] == '5') nun[i] = 43;
if(ch[i] == '6') nun[i] = 18;
if(ch[i] == '7') nun[i] = 40;
if(ch[i] == '8') nun[i] = 28;
if(ch[i] == '9') nun[i] = 5;
if(ch[i] == 'A') nun[i] = 54;
if(ch[i] == 'B') nun[i] = 20;
if(ch[i] == 'C') nun[i] = 15;
if(ch[i] == 'D') nun[i] = 8;
if(ch[i] == 'E') nun[i] = 39;
if(ch[i] == 'F') nun[i] = 57;
if(ch[i] == 'G') nun[i] = 45;
if(ch[i] == 'H') nun[i] = 36;
if(ch[i] == 'J') nun[i] = 38;
if(ch[i] == 'K') nun[i] = 51;
if(ch[i] == 'L') nun[i] = 42;
if(ch[i] == 'M') nun[i] = 49;
if(ch[i] == 'N') nun[i] = 52;
if(ch[i] == 'P') nun[i] = 53;
if(ch[i] == 'Q') nun[i] = 7;
if(ch[i] == 'R') nun[i] = 4;
if(ch[i] == 'S') nun[i] = 9;
if(ch[i] == 'T') nun[i] = 50;
if(ch[i] == 'U') nun[i] = 10;
if(ch[i] == 'V') nun[i] = 44;
if(ch[i] == 'W') nun[i] = 34;
if(ch[i] == 'X') nun[i] = 6;
if(ch[i] == 'Y') nun[i] = 25;
if(ch[i] == 'Z') nun[i] = 1;
if(ch[i] == 'a') nun[i] = 26;
if(ch[i] == 'b') nun[i] = 29;
if(ch[i] == 'c') nun[i] = 56;
if(ch[i] == 'd') nun[i] = 3;
if(ch[i] == 'e') nun[i] = 24;
if(ch[i] == 'f') nun[i] = 0;
if(ch[i] == 'g') nun[i] = 47;
if(ch[i] == 'h') nun[i] = 27;
if(ch[i] == 'i') nun[i] = 22;
if(ch[i] == 'j') nun[i] = 41;
if(ch[i] == 'k') nun[i] = 16;
if(ch[i] == 'm') nun[i] = 11;
if(ch[i] == 'n') nun[i] = 37;
if(ch[i] == 'o') nun[i] = 2;
if(ch[i] == 'p') nun[i] = 35;
if(ch[i] == 'q') nun[i] = 21;
if(ch[i] == 'r') nun[i] = 17;
if(ch[i] == 's') nun[i] = 33;
if(ch[i] == 't') nun[i] = 30;
if(ch[i] == 'u') nun[i] = 48;
if(ch[i] == 'v') nun[i] = 23;
if(ch[i] == 'w') nun[i] = 55;
if(ch[i] == 'x') nun[i] = 32;
if(ch[i] == 'y') nun[i] = 14;
if(ch[i] == 'z') nun[i] = 19;
}
}
void Change_2(){
nun[2] *= 38068692544;
nun[3] *= 3364;
nun[4] *= 11316496;
nun[5] *= 128063081718016;
nun[6] *= 656356768;
nun[7] *= 7427658739644928;
nun[8] *= 195112;
nun[9] *= 2207984167552;
nun[10]*= 58;
}
unsigned long long SUM(){
return nun[2] + nun[3] + nun[4] + nun[5] + nun[6] + nun[7] + nun[8] + nun[9] + nun[10] + nun[11];
}
void tentotwo(unsigned long long sum, int two[20]){
int a = sum;
for(int i = 1; a > 0; i++)
{
two[i] = a % 2;
a /= 2;
}
}
void finddiff(int a[29])
{
for(int i = 1; i <= 29; i++)
{
if(a[i] == diff[i]) a[i] = 0;
else a[i] = 1;
}
}
int twototen(int a[29])
{
int k = 0,sum = 0, i = 0;
while(a[i] == 0)
{
i += 1;
}
for(int j = i; j < 29; j++)
{
if(a[k++] == 1) sum += (int)pow(2,j - 1);
}
return sum;
}
int main()
{
scanf("%s", ch);
Change_1();//转数字
Change_2();//逐个*=
unsigned long long sum = SUM() - 100618342136696320;//减去一个数
int two[29] = {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1};
tentotwo(sum, two);//十进制转二进制
finddiff(two);//异或运算
printf("AV%d",twototen(two));//二进制转十进制
return 0;
}