数据结构之栈进制转换 (sdut oj 1252)
来源:互联网 发布:淘宝买家怎么开店 编辑:程序博客网 时间:2024/05/17 23:32
进制转换
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
输入一个十进制数N,将它转换成R进制数输出。
输入
输入数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R(2<=R<=16, R<>10)。
输出
为每个测试实例输出转换后的数,每个输出占一行。如果R大于10,则对应的数字规则参考16进制(比如,10用A表示,等等)。
示例输入
7 223 12-4 3
示例输出
1111B-11
法一:
#include <iostream>#include <cstdio>#include <cstring>#include <cstdlib>#include <cmath>#include <algorithm>using namespace std;void transform(int r, int n){ if (n == 0) return ; int b, c; b = n/r; c = n%r; transform(r, b); if (c >= 10) printf("%c", c+55); else printf("%d", c);}int main(){ int n, m; while(~scanf("%d %d", &n, &m)) { if (n == 0) printf("0"); else if (n < 0) { printf("-"); transform(m, -n); } else transform(m, n); printf("\n"); } return 0;}
法二:
#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#include <cstdlib>#include <algorithm>using namespace std;char s[16]= {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};int main(){ int n, r; int y[1000]; while(~scanf("%d %d", &n, &r)) { if(n == 0) printf("0\n"); else { int x = n, top = 0; while(x) { y[top]=x%r; x = x/r; top++; } if(n < 0) { printf("-"); while(top--) { int a = fabs(y[top]); printf("%c",s[a]); } } else { while(top--) printf("%c", s[y[top]]); } printf("\n"); } } return 0;}#include <iostream>#include <cstdio>#include <cstdlib>#include <cmath>#include <cstring>#include <algorithm>#define stackmax 10000 //栈的初始空间存储分配量#define stacknum 10000 //存储空间每次增加的分量using namespace std;typedef char elemtype;typedef struct{ elemtype *top; elemtype *base; int stacksize;} Qstack;//构建一个空栈int Initstack(Qstack &s){ s.base = (elemtype *)malloc(stackmax*sizeof(elemtype)); if( !s.base ) exit(0); s.top = s.base; s.stacksize = stackmax; return 0;}//创建一个栈int Pushstack(Qstack &s, char e){ if(s.top - s.base >= s.stacksize)//栈满, 追加存储空间 { s.base = (elemtype *)realloc(s.base, (s.stacksize+stacknum)*sizeof(elemtype)); if(!s.base) { exit(0); } s.top = s.base+s.stacksize; s.stacksize += stacknum; } /*for(int i = 0, i < n; i++) { scanf("%d", &e);//给栈赋值 *s.top++ = e; }*/ *s.top++ = e; return 0;}//出栈,输出栈里元素int Putstack(Qstack &s, int f){ if(f != 0) printf("-"); while(s.top > s.base) { printf("%c", *(s.top-1)); s.top--; } printf("\n"); return 0;}int main(){ int n, r, t; char e; Qstack s;//定义一个栈 while(~scanf("%d %d", &n, &r)) { int f=0; if(n == 0) { printf("0\n"); } else { if(n < 0) { n = -n; f = 1; } Initstack(s);//初始化栈 while(n) { t = n%r; if(t >= 10) e = t - 10 + 'A'; else e = t + '0'; Pushstack(s, e); n = n/r; } Putstack(s, f); } } return 0;}
0 0
- 数据结构之栈进制转换 (sdut oj 1252)
- 数据结构之栈实验进制转换 (sdut oj 2131)
- SDUT OJ 数据结构实验之栈二:一般算术表达式转换成后缀式
- 数据结构实验之栈二:一般算术表达式转换成后缀式 (sdut oj 2132)
- 数据结构实验之栈与队列二:一般算术表达式转换成后缀式 sdut-oj
- 大小写转换 (sdut oj)
- SDUT Oj数据结构实验之栈六:下一较大值(二)
- SDUT OJ 数据结构实验之栈四:括号匹配
- SDUT OJ 数据结构实验之队列一:排队买饭
- SDUT OJ 数据结构实验之栈:行编辑器
- SDUT OJ 数据结构实验之二叉树七:叶子问题
- 数据结构实验之串三:KMP应用 sdut(oj 3311)
- 数据结构实验之查找一:二叉排序树 (sdut oj 3373)
- SDUT oj 数据结构实验之查找一:二叉排序树
- 数据结构实验之查找四:二分查找 (sdut oj 3376)
- 数据结构实验之查找六:顺序查找 sdut oj 3378
- 数据结构实验之排序二:交换排序 sdut oj 3399
- 数据结构实验之排序三:bucket sort sdut oj 3400
- 在.NET平台下【使用WinForm + MySQL】制作数据库管理软件
- poj2112 Optimal Milking 最大流(含经典最大流问题总结)
- tomcat设置图片服务器
- (NYoj 237)游戏高手的烦恼 --二部图最大匹配,匈牙利算法
- 第52课:spark的新解析引擎catalyst源码中的外部数据源、缓存及其他
- 数据结构之栈进制转换 (sdut oj 1252)
- Java Web学习(25): JSTL学习(三)
- 蓝桥杯 笨小猴 水题的水方法
- hdoj 2612 Find a way (bfs,双向搜索)
- tjut 4661
- 百度——罪犯转移、裁剪网格纸、钓鱼比赛、蘑菇阵
- Qt完美实现切图
- Codeforces626E Simple Skewness(二分)
- 配置nginx使之支持thinkphp