UVA - 11121 Base -2
来源:互联网 发布:mac 安装搜狗输入法 编辑:程序博客网 时间:2024/06/06 02:01
题目大意:给出一个十进制的数,将这个数转换成-2进制的数。
解题思路:进制转化是一种很简单的题型,可是对于负数的进制来说我就很陌生了,研究了蛮久的,这里分享一下。
首先要了解如何将一个-2进制的数转换成十进制数,例如7对应的-2进制数即为11011;
1 * (-2) ^ 4 + 1 * (-2) ^ 3 + 0 * (-2) ^ 2 + 1 * (-2) ^ 1 + 1 * (-2) ^ 0 = 16 - 8 + 0 - 2 + 1 = 7(和2进制转10进制是一个道理)
其次n / (-2) = - (n / 2) ;当n ≥ 0时,n % (-2) = n % 2, 当n < 0时, n % (-2) = - (|n| % 2);这样写出来方便理解。
最后就是进制的转换了,10进制转2进制的大家都会,就是每次模2,取整。其实转-2进制也是一样的,每次模-2,取整,可是这里就涉及到符号的问题。
例: 以7为例子
a)7%(-2)=1, 7/(-2)=-3 --------- -3 * (-2) ^ 1 + 1 * (-2) ^ 0 = 6 + 1 = 7 ;-3、1
b)-3% (-2) = -1 -3/(-2) = 1---------- -1 *(-2) ^ 2 + (-1) * (-2) ^ 1 + 1 * (-2) ^ 0 = 4 + 2 + 1 = 7;1、-1、1
可是这里出现了-1,-1不能在这里面出现,所以只能尝试将等价的数值转移到高位,或是低位,可是转移到低位是要进位的,所以使不可取的,只能转向高位;现在假设当前为-1的位为当前位,那当当前位的高位增加1时,对应则是当前位的数值增加2,若要保持数值的不变,则要减去增加的数值,若减在高位上则没有改变,所以只能减在当前位上。
即 2、-1 - (-2)、1 (会出现模-2小于0的肯定是奇数为,奇数位要注意符号为负) 2 、 1、1
2 * (-2) ^ 2 + 1 * (-2) ^ 1 + 0 * (-2) ^ 0 = 8 - 2 + 1 = 7
重复执行a、b,直到取整为0,就可以得到答案。
归纳:其他的-bas进制,也是以同样的方式进行进制转换,只是对应的负数a,a + bas。
#include <cstdio>int main() {int T, kase = 0;scanf("%d", &T);while (T--) {int n, i = -1, A[100] = {0};scanf("%d", &n);while (n) {A[++i] = n % (-2);n = n / (-2);if (A[i] == -1) {A[i] = 1;n++;}}printf("Case #%d: ", ++kase);while (i > 0)printf("%d", A[i--]);printf("%d\n", A[0]);}return 0;}
- uva 11121 - Base -2
- UVA 11121 Base -2
- UVa 11121 - Base -2
- uva 11121 - Base -2
- Uva 11121 Base -2
- UVA - 11121 Base -2
- UVA 11121 Base -2
- UVa 11121 - Base -2
- UVA - 11121 Base -2
- UVA 11121 - Base -2 (数论)
- UVA - 11121 Base -2 进制数
- Base -2 - UVa 11121 -2进制
- uva 11121 - Base -2(负进制转换)
- UVa 11121 Base -2 / 进制转换
- UVA - 11121 - Base -2 (负进制转换!)
- uva 11121 Base -2 (负进制计算)
- UVA 11121 Base -2 (进制转换)
- UVa 11121 Base -2 (数论 & -2进制 & 补足思想)
- 从最简单的实例学习ARM 指令集(三)
- Linux下组播&广播消息小例子
- 100.Same Tree
- 高质量的css--css hack ,行元素,块元素,居中,定位
- PE 19 Counting Sundays
- UVA - 11121 Base -2
- HI3516C3518A3518E3518C安防视频音频传输4GWIFI方案定制开发
- freemark示例代码
- UVA - 10791 Minimum Sum LCM
- 数据结构-栈和队列
- 2014年总结暨2015展望
- hdu 1828 picture
- 网站被k的症状原因有哪些-怎么恢复
- 【黑马程序员】iOS学习之路——Objective-C之Foundation