Skew Binary
2015-08-05 10:47
393 查看
Skew Binary
Description
When a number is expressed in decimal, the k-th digit represents a multiple of 10k. (Digits are numbered from right to left, where the least significant digit is number 0.) For example,
When a number is expressed in binary, the k-th digit represents a multiple of 2k. For example,
In skew binary, the k-th digit represents a multiple of 2k+1 - 1. The only possible digits are 0 and 1, except that the least-significant nonzero digit can be a 2. For example,
The first 10 numbers in skew binary are 0, 1, 2, 10, 11, 12, 20, 100, 101, and 102. (Skew binary is useful in some applications because it is possible to add 1 with at most one carry. However, this has nothing to do with the current problem.)
n. If n = 0 it signals the end of the input, and otherwise n is a nonnegative integer in skew binary.
31 - 1 = 2147483647.
大意:
类似于二进制转化为10进制数;
只不过在要-1
代码:
#include <stdio.h>
#include <string.h>
#include <cmath>
char a[500];
int main(){
while (scanf ("%s", a) && strcmp (a, "0")){
int leng = strlen(a);
int sum = 0;
for (int i = leng - 1, j = 1; i >= 0; i--, j++){
sum += (pow(2, j) - 1) * (a[i] - '0');
}
printf ("%d\n", sum);
}
return 0;
}
Description
When a number is expressed in decimal, the k-th digit represents a multiple of 10k. (Digits are numbered from right to left, where the least significant digit is number 0.) For example,
When a number is expressed in binary, the k-th digit represents a multiple of 2k. For example,
In skew binary, the k-th digit represents a multiple of 2k+1 - 1. The only possible digits are 0 and 1, except that the least-significant nonzero digit can be a 2. For example,
The first 10 numbers in skew binary are 0, 1, 2, 10, 11, 12, 20, 100, 101, and 102. (Skew binary is useful in some applications because it is possible to add 1 with at most one carry. However, this has nothing to do with the current problem.)
Input
The input file contains one or more lines, each of which contains an integern. If n = 0 it signals the end of the input, and otherwise n is a nonnegative integer in skew binary.
Output
For each number, output the decimal equivalent. The decimal value of n will be at most 231 - 1 = 2147483647.
Sample Input
10120 200000000000000000000000000000 10 1000000000000000000000000000000 11 100 11111000001110000101101102000 0
Sample Output
44 2147483646 3 2147483647 4 7 1041110737
大意:
类似于二进制转化为10进制数;
只不过在要-1
代码:
#include <stdio.h>
#include <string.h>
#include <cmath>
char a[500];
int main(){
while (scanf ("%s", a) && strcmp (a, "0")){
int leng = strlen(a);
int sum = 0;
for (int i = leng - 1, j = 1; i >= 0; i--, j++){
sum += (pow(2, j) - 1) * (a[i] - '0');
}
printf ("%d\n", sum);
}
return 0;
}
相关文章推荐
- DevExpress v15.1:VCL控件功能增强(二)
- Construct Binary Tree from Preorder and Inorder Traversal
- Android launcher3常用的类
- android开发出现No Launcher activity found!解决方案
- GitHub 优秀的 Android 开源项目
- linux(mint)中codeblock的设置
- Heap Spray原理浅析
- python3.4学习笔记(二十六) Python 输出json到文件,让json.dumps输出中文 实例代码
- 30天,O2O速成攻略【8.15长沙站】
- git使用
- Android的Button控件的点击事件的四种写法
- Java,Android使用RSA 算法加解密
- Java,Android使用RSA 算法加解密
- gmock学习
- iframe 操作父元素或者操作子元素
- Android 谷歌 开源 通信框架 VOLLEY(一)
- 工作笔记1
- Maven Archetype Plugin
- android注解
- JavaScript节点及列表操作实例小结