#include<bits/stdc++.h>
using namespace std;
const int S=16;
int num[110];
int main(){
cout<<"欢迎来到随机点名"<<endl;
_sleep(500);
bool p[110];
while(true){
for(int i=1;i<=S;i++){
p[i]=0;
}
cout<<"输入抽取个数(0为退出)"<<endl;
int n;
cin>>n;
if(n==0){
break;
}
for(int i=1;i<=n;){
int x=rand()%S+1;
if(p[x]==0){
p[x]=1;
num[x]++;
cout<<x<<" ";
i++;
}
}
cout<<endl;
if(p[15]&&p[9]){
cout<<132499;
}
cout<<endl;
}
cout<<"本次抽取:"<<endl;
_sleep(1000);
for(int i=1;i<=S;i++){
cout<<i<<"号:"<<num[i]<<"次"<<" ";
}
return 0;
}
#传入一个字符,返回字符ASCII码所对应的8位二进制字符
def tob(ch):
x = ord(ch) #将字符转换为ASCII
res = '' #存储返回值
#补充完成将x转换为8位二进制字符的代码
while x>0:
res=str(x%2)+res
x=x//2
if len(res)!=8:
res='0'*(8-len(res))+res
return res
#传入一个二进制字符串,返回其所对应的十进制数
def tod(s):
res = 0 #存储返回值
#补充完成二进制转十进制代码
for ch in s:
res=res*2+int(ch)
return res
h = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' #用于字符映射
equals_cnt = 0 #补“=”的个数
zero_cnt = 0 #补“0”的个数
s = input() #读入待编码字符
#==========1. 计算补“=”个数存入 equals_cnt========================
if len(s) % 3 != 0:
equals_cnt=3-len(s)%3
#==========2. 将字符串s按照ASCII码转换为二进制串,存储在bits中=======
bits = '' #存储转换后的二进制串
for ch in s:
bits=bits+tob(ch)
#==========3. 计算补“0”个数存入zero_cnt===========================
if len(bits)%6!=0:
zero_cnt=6-len(bits)%6
#===========4. 为二进制串bits补zero_cnt个0=========================
bits=bits+'0'*zero_cnt
#===========5. 按照Base64编码规则将转换后的编码存入ans===============
ans = ''
for i in range(0,len(bits),6):
sjz=tod(bits[i:i+6])
ans=ans+h[sjz]
#===========6. 为ans补等号=========================================
ans=ans+'='*equals_cnt
print(ans)