hdu5237-字符串模拟&细节-Base64
来源:互联网 发布:卓越之剑 全套 源码 编辑:程序博客网 时间:2024/06/07 03:28
https://vjudge.net/problem/175274/origin
把每个字符的ansicc码变成二进制链接起来,然后再每隔6个当成一个数字,索引查找一个表对应的字符,如果最后不够6个。补够0
需要稍加处理,① 如果最后剩1个字符,那么最后那12个组成的2个字符不取,补上 ‘=’
② 如果最后剩12个,最后6个组成的字符不取。
这样搞k次,问你最后的结果。
错了两次。
第一次是因为不太清楚string。
这样string的长度仍然是输入的长度。。
方法有两个改进,① 用+号,最后取长度就行。
② 把string 用resize一下,那么resize一个非常大的数,那么就和char数组没有啥区别了。。
③ 直接用char数组把。。
顺便记一下。这是某个大佬弄的,在很多很多运算的时候,string的apend比+ 号略快。 其他情况下用 加号就行。
#include <bits/stdc++.h>using namespace std;string ss="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";vector<int>q;string s;int kk[10];int main(){ int t,cs; q.clear(); scanf("%d",&t); int cas=1; while(t--){ q.clear(); cin>>cs; //s.resize(2000000); //getchar(); cin>>s; //cout<<s<<endl; //cout<<s.length()<<endl; q.clear(); int xr=s.length(); int loc=0; for(int ii=1;ii<=cs;ii++){ q.clear(); for(int i=0;i<xr;i++){ int num=s[i]; memset(kk,0,sizeof(kk)); int bj=0; //cout<<num<<"**"<<endl; for(int j=0;j<8;j++){ kk[bj++]=num%2; num/=2; } reverse(kk,kk+bj); for(int j=0;j<bj;j++) q.push_back(kk[j]); } int flag1=-1; if(q.size()%24==8) flag1=1; if(q.size()%24==16) flag1=2; while(q.size()%24){ q.push_back(0); } int tim=q.size()/6; if(flag1==1) tim-=2; else if(flag1==2) tim-=1; loc=0; xr=0; s.clear(); for(int i=0;i<tim;i++){ int qz=(int)pow(2,5); int ans=0; for(int j=loc;j<6+loc;j++){ if(q[j]) ans+=q[j]*qz; qz/=2; } loc+=6; s+=ss[ans%64]; } //cout<<xr<<"??"<<endl; if(flag1==1) s+="=="; if(flag1==2) s+="="; xr=s.length(); //cout<<xr<<endl; if(ii==cs){ printf("Case #%d: ",cas++); for(int j=0;j<xr;j++){ cout<<s[j]; } cout<<endl; break; } } } return 0;}
阅读全文
0 0
- hdu5237-字符串模拟&细节-Base64
- HDU5237 Base64 大模拟
- hdu5237 Base64(模拟)
- HDU5237- Base64
- 模拟实现字符串拷贝函数小细节
- base64后台传输细节处理
- Uva 127 模拟+细节
- Hiho 1385 模拟,细节
- UVA10366(细节模拟)
- 字符串的编码Base64
- base64字符串加水印
- .NET Base64字符串解码
- BASE64加密字符串总结
- BASE64加密解密(字符串)
- 字符串转base64
- 图片转base64字符串
- js 字符串转base64
- 字符串base64编码
- 添加okhttp拦截器
- Java中判断字符串是否为数字的五种方法
- VMware的“桥接”、“NAT”、“Host-only”上网方式的区别
- Java
- Linux安装VMwareTools
- hdu5237-字符串模拟&细节-Base64
- CentOS 6.9安装Python2.7.13
- recycleview 点击条目事件 +拦截器
- 剖析new/delete、new[]/delete[]到底做了些什么事情
- HTTP请求过程
- 插入
- 使用HTC和Steam VR进行unity VR的开发第二步 (实现功能)
- 第八周-项目3-顺序串算法
- 实验报告二