【学习笔记】程序设计导引及在线实践 数值转换问题(2)
2014-07-20 19:55
239 查看
【学习笔记】程序设计导引及在线实践 数值转换问题(2)相邻数字的基数不等比:skew数
问题描述
在 skew binary 表示中, 第 k 位的值x k 表示x k x(2 k+1 -1)。 每个位上的可能数字是0 或 1,最后面一个非零位可以是2, 例如, 10120(skew) = 1x (2 5 -1) + 0x (2 4 -1) + 1x (2 3 -1) + 2x (2 2 -1) + 0 (2 1 -1) = 31 + 0 + 7 + 6 + 0 = 44. 前十个skew 数是 0、1、2、10、11、12、20、100、101、
以及102。
输入数据
输入包含一行或多行,每行包含一个整数n。 如果 n = 0 表示输入结束,否则n 是一个skew 数
输出要求
对于每一个输入,输出它的十进制表示。转换成十进制后, n 不超过 2 31 -1 =2147483647
输入样例
10120
200000000000000000000000000000
10
1000000000000000000000000000000
11
100
11111000001110000101101102000
0
输出样例
44
2147483646
3
2147483647
4
7
1041110737
----------------------------------------------------------------------------------------
关键:找到递推关系,存储权值,倒序相乘。
源代码:
问题描述
在 skew binary 表示中, 第 k 位的值x k 表示x k x(2 k+1 -1)。 每个位上的可能数字是0 或 1,最后面一个非零位可以是2, 例如, 10120(skew) = 1x (2 5 -1) + 0x (2 4 -1) + 1x (2 3 -1) + 2x (2 2 -1) + 0 (2 1 -1) = 31 + 0 + 7 + 6 + 0 = 44. 前十个skew 数是 0、1、2、10、11、12、20、100、101、
以及102。
输入数据
输入包含一行或多行,每行包含一个整数n。 如果 n = 0 表示输入结束,否则n 是一个skew 数
输出要求
对于每一个输入,输出它的十进制表示。转换成十进制后, n 不超过 2 31 -1 =2147483647
输入样例
10120
200000000000000000000000000000
10
1000000000000000000000000000000
11
100
11111000001110000101101102000
0
输出样例
44
2147483646
3
2147483647
4
7
1041110737
----------------------------------------------------------------------------------------
关键:找到递推关系,存储权值,倒序相乘。
源代码:
#include<iostream> #include<cstring> using namespace std; int main(){ int i,k,base[31],sum; char skew[32]; base[0]=1; for(i=1;i<31;i++) //权值数组base[i]:具有如下递推关系: //base[0]=1; //base[k]=2^k+1-1=2*(2^k-1)+1=2*base[k-1]+1 base[i]=2*base[i-1]+1; while(1){ scanf("%s",skew); //strcmp的用法说明: //strcmp(str1,str2) //如果str1=str2,则返回零;若str1>str2,则返回正数;若str1<str2,则返回负数。 if(strcmp(skew,"0")==0) //输入skew为0时程序结束 break; //初始化sum值 sum=0; //获取skew数组的长度k k=strlen(skew); for(i=0;i<strlen(skew);i++){ k--; //base数组{1,3,7....}权值依次增大即为高位的权值 //因此此处应该倒着调用base的权值 sum+=(skew[i]-'0')*base[k]; } printf("%d\n",sum); } return 0; }
相关文章推荐
- 【学习笔记】程序设计导引及在线实践 数值转换问题
- T-SQL学习笔记-程序设计基础-流程控制语句
- 希望深入学习后能回答这个问题—“ 有谁知道用OPENMP,CUDA,MPI,TBB这些方法设计出来的程序的性能和优缺点”
- 程序设计实践与提高1 - 学习记录
- 程序设计实践与提高1 - 学习记录
- T-SQL学习笔记-程序设计基础-自定义函数
- 算法设计和数据结构学习_3(《数据结构和问题求解》part2笔记)
- 木其工作室(专业程序代写服务)[原]ok6410学习笔记(18.linux串口驱动程序设计)
- STM32F10x 学习笔记9(解决JLink 无法下载程序的问题)
- IOS学习之路二十(程序json转换数据的中文字符问题解决)
- 【学习心得】-数值转换问题小思-1
- Qt学习笔记,Qt程序架构设计要旨
- 算法设计和数据结构学习_4(《数据结构和问题求解》part4笔记)
- 程序设计实践笔记---风格
- Linux程序设计-学习笔记-第二章shell程序设计
- java学习笔记---第一个applet程序以及一个小问题的解决
- Struts学习笔记:程序的组件设计与分析
- 程序设计实践与提高2 - 学习记录
- STM32F10x 学习笔记之解决JLink 无法下载程序的问题
- STM32F10x 学习笔记9(解决JLink 无法下载程序的问题)