UVA 11121 Base -2
来源:互联网 发布:sql server rowguid 编辑:程序博客网 时间:2024/06/11 22:49
大意:将一个十进制的数转换成-2进制的数。
思路:
与转换为2进制类似,只不过迭代时,当n为负数的时候,n % base的值可能为-1,而我们不允许-1出现,则把-1替换为-1 -= base;而替换之后减少的那一部分的值需要在迭代的时候加回来。
有一个人讲的比较清楚:http://www.cnblogs.com/scau20110726/archive/2012/12/21/2828420.html
我们可以把这个推广到任意负数进制的转换。
#include <iostream>#include <cstdlib>#include <cstdio>#include <cstring>#include <string>using namespace std;const int base = -5;const int MAXN = 100010;int n;int stack[MAXN];void read_case(){scanf("%d", &n);}void solve(){read_case();if(!n) { printf("0\n"); return ; }int top = 0;while(n){int t = n % base;n /= base;if(t < 0){t -= base;n++;}stack[top++] = t;}while(top){int t = stack[--top];printf("%d", t);}printf("\n");}int main(){int T, times = 0;scanf("%d", &T);while(T--){printf("Case #%d: ", ++times);solve();}return 0;}
任意负数进制的转换:
void solve(){read_case();if(!n) { printf("0\n"); return ; }int top = 0;while(n){int t = n % base;n /= base;if(t < 0){t -= base;n++;}stack[top++] = t;}while(top){int t = stack[--top];printf("%d", t);}printf("\n");}
- 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进制 & 补足思想)
- MainWindow.xib
- 创建一个Android Activity
- frame buffer
- APP STORE 付费验证(IAP)服务端验证全过程
- objectc 块编程指南
- UVA 11121 Base -2
- magento 添加Creditmemo记录
- python之文件处理
- Linux 下编译并安装配置 Qt
- js 禁用只读文本框获得焦点时的退格键
- 浅谈MVC模式在游戏开发的应用
- srd::string 用法 C++
- #if、#ifdef、#if defined之间的区别
- XCode 4.3.2 如何新建 Window-based Application应用的简单例子