HNUST二队练习赛BNU I、编码
来源:互联网 发布:要使500平方店网络覆盖 编辑:程序博客网 时间:2024/04/28 01:06
/*******
题目:I. 编码
链接:http://acm.bnu.edu.cn/v3/contest_show.php?cid=6068#problem/I
题意:二进制与十进制之间的转换。
思路:将所给的字符串进行解码,转换成编码,存入数组中,在进行二进制转换,然后二进制数每八个一组转换为十进制,再将其用字符输出即可。
问题:题目中的‘=’号的编码和‘A’的相同。在解码时应该考虑‘=’的问题。但当时由于时间问题,没能过多的思考,提交后也过了。
*******/
#include <stdio.h>
#include <string.h>
#include <math.h>
int
main()
{
char
a[1003];
char
ans[2000];
int
b[8000],k[800];
scanf
(
"%s"
,a);
int
i,t,tag,x,j;
int
w,ss;
t=
strlen
(a);
tag=0;
for
(i=0; i<t; i++)
{
if
(a[i]>=
'A'
&&a[i]<=
'Z'
)
k[tag]=a[i]-
'A'
;
else
if
(a[i]>=
'a'
&&a[i]<=
'z'
)
k[tag]=a[i]-
'a'
+26;
else
if
(a[i]==
'='
)
k[tag]=a[i]-
'='
;
else
if
(a[i]>=
'0'
&&a[i]<=
'9'
)
k[tag]=a[i]-
'0'
+52;
else
if
(a[i]==
'+'
)
k[tag]=a[i]-
'+'
+62;
else
if
(a[i]==
'/'
)
k[tag]=a[i]-
'/'
+63;
//printf("%d ",k[tag]);
tag++;
}
x=0;
for
(i=0; i<tag; i++)
{
w=k[i];
for
(j=x+5; j>=x; j--)
{
b[j]=w%2;
//将编码转化为二进制并储存在数组b中
w=w/2;
}
x+=6;
//每六个为一组
}
ss=0;
for
(i=0; i<x-6; )
{
ans[ss]=0;
for
(j=7; j>=0; j--)
{
ans[ss]+=b[i]*
pow
(2,j);
//将2进制转化为10进制,并存入ans数组中
//printf("%d ",ans[ss]);
//printf("%d",b[i]);
i++;
}
//printf("\n%d\n",ans[ss]);
ss++;
// 每8个二进制数对应一位编码
}
printf
(
"%s\n"
,ans);
return
0;
}
0 0
- HNUST二队练习赛BNU I、编码
- HNUST二队练习赛BNU A、收成
- BNU hnust训练赛 J特殊运算
- HNUST专题练习:二分法
- Hnust 1071 赫夫曼编码
- HNUST 1520: 压缩编码
- 130811个人赛练习BNU-Regionals 2012, Asia - Tokyo
- hnust
- hnust
- hnust
- hnust
- hnust
- hnust
- hnust
- hnust
- hnust
- (hnust 1520) 压缩编码 (技巧模拟)
- 【组队赛#5】BNU 4299 God Save the i-th Queen (数组映射)
- android学习记录(十三)Task 和 Activity 回退栈操作。
- Leetcode Java Add Two Numbers
- 天题之 Median of Two Sorted Arrays
- Silverlight C++ XRPack 版本不兼容&资源编译
- UVA - 1390(概率dp + hash)
- HNUST二队练习赛BNU I、编码
- POJ 3126 Prime Path(BFS 数字处理)
- VC++6.0调试程序学习
- 电信141p51第12题
- 3.1_The template engine
- 就这样,开始新的一天
- HNUST二队练习赛BNU A、收成
- 单例模式
- Linux中的文件默认权限:umask