UVA575 Skew Binary
2016-05-19 20:51
204 查看
思路:简单模拟题
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,
8130710 = 8 × 104 + 1 × 103 + 3 × 102 + 0 × 101 + 7 × 100 = 80000 + 1000 + 300 + 0 + 7 = 81307.
When a number is expressed in binary, the k-th digit represents a multiple of 2
k
. For example,
100112 = 1 × 2
4 + 0 × 2
3 + 0 × 2
2 + 1 × 2
1 + 1 × 2
0 = 16 + 0 + 0 + 2 + 1 = 19.
In skew binary, the k-th digit represents a multiple of 2
k+1 − 1. The only possible digits are 0
and 1, except that the least-significant nonzero digit can be a 2. For example,
10120skew = 1×(25 −1)+ 0×(24 −1)+ 1×(23 −1)+ 2×(22 −1)+ 0×(21 −1) = 31+ 0+ 7+ 6+ 0 = 44.
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 integer n. 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 2
31 − 1 =
2147483647.
Sample Input
10120
200000000000000000000000000000
10
1000000000000000000000000000000
11
100
11111000001110000101101102000
0
Sample Output
44
2147483646
3
2147483647
4
7
1041110737
#include <cstdio> #include <cstring> const int maxn = 33; char num[maxn]; int main() { int n; while (gets(num) && num[0] != '0') { int l = strlen(num); int sum = 0; for (int i = 0 ;i < l; i++) sum += (num[i] - '0') * ((1 << (l - i)) - 1); printf("%d\n", sum); } return 0; }
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,
8130710 = 8 × 104 + 1 × 103 + 3 × 102 + 0 × 101 + 7 × 100 = 80000 + 1000 + 300 + 0 + 7 = 81307.
When a number is expressed in binary, the k-th digit represents a multiple of 2
k
. For example,
100112 = 1 × 2
4 + 0 × 2
3 + 0 × 2
2 + 1 × 2
1 + 1 × 2
0 = 16 + 0 + 0 + 2 + 1 = 19.
In skew binary, the k-th digit represents a multiple of 2
k+1 − 1. The only possible digits are 0
and 1, except that the least-significant nonzero digit can be a 2. For example,
10120skew = 1×(25 −1)+ 0×(24 −1)+ 1×(23 −1)+ 2×(22 −1)+ 0×(21 −1) = 31+ 0+ 7+ 6+ 0 = 44.
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 integer n. 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 2
31 − 1 =
2147483647.
Sample Input
10120
200000000000000000000000000000
10
1000000000000000000000000000000
11
100
11111000001110000101101102000
0
Sample Output
44
2147483646
3
2147483647
4
7
1041110737
相关文章推荐
- android:layout_weight 使用方法
- 万圣节派对
- 具有静态和动态生存期对象的时钟程序
- AngularJs $scope.$apply
- Leetcode 344. Reverse String
- addLoadEvent应用方法
- 判断一个比较大的数是不是素数的方式(最简单的)
- 软件工程课堂作业——寻找“水王”
- 如何解决端口被占用情况
- leetcode笔记—map容器的使用
- hdu 4709 Herding
- html总结
- 蓝桥杯 算法提高 拿糖果
- 深入理解Activity启动模式(一)–Activity与进程,线程的关系
- hdu4973 A simple simulation problem.(成段更新+下标转化)
- java读写ini文件、FileOutputStream
- 字符与字节
- POJ 1625 Censored!
- DFS解答树的过程(1045)
- MySQL修改root密码的各种方法整理