POJ3191- The Moronic Cowmpouter 十进制转负n进制
来源:互联网 发布:淘宝高颜值零食图片 编辑:程序博客网 时间:2024/05/22 04:48
题意:给一个十进制数,转为-2进制数
例如-13;
1*1 + 1*-2 + 1*4 + 0*-8 +1*16 + 1*-32 = -13
所以答案是
110111
其实和十进制转2转2差不多啦。。
---------------------十进制转2进制的过程--------------
1、先用num%2;得到的数 存入ans[0]
2、然后得到商num=num/2;
然后重复1、2直到num==0;
逆序输出ans[]数组就是二进制结果了
---------------------十进制转-2进制的过程--------------
1、先用num%-2;得到的数 存入ans[0] // 由于不管是正进制还是负进制,其基数都是正的【0,R】,所以如果ans[i]为负需要取绝对值
2、num=num-ans[i]; //减去余数部分
2、然后得到商 //由于是负数 例如-13 要除-2使得余数为1, 商应该是-7,因为-13-(-2*-7)=1 ,要得到7,应该用num=num-ans[i];然后再num=num/-2;
然后重复1、2直到num==0;
逆序输出ans[]数组就是负二进制结果了
-------------------------------------------------------------------
过程见图
注意要特判n=0的情况!
***************突然发现只有-2进制才能这样算。。、-3进制却不可以。、。。。后续更新。。。。。
*******************现在将代码改成下面这样的,-3进制也可以了。。。网上传的那份代码只可以计算-2进制,不能正确得到-3进制的答案,下面这份代码只要把2改成n就可以计算-n进制了。
#include <cstdio>#include <cmath>#include <cstring>#include <string>#include <algorithm>#include <iostream>#include <queue>#include <map>#include <set>#include <vector>using namespace std; int ans[100005];int main(){ int a,b;int n;scanf("%d",&n);if (!n) {printf("0\n");return 0;}int i=0;while(n){if (n>0)<span style="white-space:pre"></span>//n为正,和普通进制转换无异{ans[i]=n%2;n=n/-2;}else{if ( (-n)%2==0) 恰好整除,<span style="font-size: 12.380952835083px; font-family: Arial, Helvetica, sans-serif;">和普通进制转换无异</span>{ans[i]=0;n=n/-2;}else<span style="white-space:pre"></span>//不整除且被除数为负,商应该为 n的绝对值除以K(进制数),得到的商再进一,表示得到一个绝对值更大的负数,被除数与之相减才能得到正///的余数{ans[i]=((-n)/2+1)*(2)-(-n); //余数的计算是根据得到的商*K(进制数)-原来的(n)的绝对值;也就是(-n)n=(-n)/2+1;}} i++;}for (i--;i>=0;i--)printf("%d",ans[i]);printf("\n");return 0;}
0 0
- POJ3191- The Moronic Cowmpouter 十进制转负n进制
- POJ3191-The Moronic Cowmpouter
- Poj 3191 The Moronic Cowmpouter【十进制转负二进制】
- Poj 3191 The Moronic Cowmpouter【十进制转负二进制】
- poj 3191 The Moronic Cowmpouter 十进制转-2进制
- POJ 3191 The Moronic Cowmpouter 负二进制转换
- poj 3191The Moronic Cowmpouter (负进位制)
- The Moronic Cowmpouter poj3191(负进制转换以及其他进制转换模板)
- PKU 3191 The Moronic Cowmpouter
- pku 3191 The Moronic Cowmpouter
- POJ 3191 The Moronic Cowmpouter
- poj 3191 The Moronic Cowmpouter
- POJ 3191 The Moronic Cowmpouter
- POJ 3191The Moronic Cowmpouter
- [POJ 3191 The Moronic Cowmpouter]数学
- POJ 3191 The Moronic Cowmpouter 可能会
- POJ 3191 The Moronic Cowmpouter 笔记
- POJ 3191 The Moronic Cowmpouter (-2进制转换)
- 深入解析C++中的引用类型
- cookies 和 session
- ViewController 加 tableView 调用 scrollViewDidScroll 方法
- 对象基础
- hdu 4617 Weapon(几何)
- POJ3191- The Moronic Cowmpouter 十进制转负n进制
- 抽象类和接口的区别[精华版]
- 响应的优化体验
- 安卓第一次实验解析
- R函数全纪录
- 每天留一点时间 给回忆
- String类的获取功能
- 《一个陌生女人的来信》观后感
- String类的转换功能