UVa213
来源:互联网 发布:mac怎么重命名文件 编辑:程序博客网 时间:2024/06/12 19:35
问题描述:
https://uva.onlinejudge.org/local/online_judge/search_uva.html
问题分析:
<1>首先用字符数组存储编码头
<2> 0 00 01 10 000 001 010 011 100 101 110….分别对应编码头的第1个字符,第2个字符,第3个字符……所以读取一个文本后,此编码在编码头数组中对应的字符标号就很重要,考虑写一个position(int lens,int n)函数,lens代表编码文本长度,n代表编码文本对应的十进制数。
#include <stdio.h>#include <string.h>#define maxn 100#define LOCALint pow(int n){ //返回2的n次方,n为自然数。 int a=1; while(n>0){ a*=2; n--; } return a;}int trans(int digit){ //读取一个digit位的二进制数并返回它的十进制值 int ret=0; char c; int t; do{ digit--; scanf("%c",&c); if(c!='\n'&& c!='\r'){ //if语句解决跨行读取文本时的换行符问题 t=c-'0'; ret+=t*pow(digit); }else{ digit++; } }while(digit>0); return ret;}int position(int lens,int n){ //返回长度为lens,大小为n(十进制)在数组中的位置 int sum=0; while(lens>=1){ lens--; sum+=pow(lens)-1; } int position=sum+n+1; return position;}int main(){#ifdef LOCAL freopen("p83in.txt","r",stdin); freopen("p83out.txt","w",stdout);#endif char a[maxn]; while(gets(a)!=NULL){ while(int n=trans(3)){ int decimal=0; do{ decimal=trans(n); if(decimal!=pow(n)-1){ int i=position(n,decimal); printf("%c",a[i-1]); } }while(decimal!=pow(n)-1); } } return 0;}
0 0
- UVa213
- UVa213
- UVa213
- UVa213
- UVa213
- UVA213 - Message Decoding
- uva213信息解码
- 例题4-4 uva213
- UVa213 Message Decoding
- UVa213 - Message Decoding
- UVA213----Message Decoding
- UVA213 UVALive5152 Message Decoding
- Uva213信息解码
- UVa213-信息解码
- uva213解题报告
- UVa213-Message Decoding
- UVa213 Message Decoding
- UVa213 Message Decoding
- Easyui--datagrid 的使用 (弹出框的使用)
- Overloud REmatrix
- 归一化处理
- vs2012,配置openMP
- 『RNN 监督序列标注』笔记-第三章 神经网络
- UVa213
- galleryapp
- Linux中的likely()和unlikely()
- inline-block
- CrackMe 之 Acid Burn 破解
- java程序操作xml文件
- 学习一个WinAPI实现的线程基类
- 开通博客,留下mark
- 存储过程