POJ1220(高精度进制转换)
2013-05-04 20:37
162 查看
题目:NUMBER BASE CONVERSION
就是后面的数字以a进制的形式给出,要求转化为b进制输出。
就是后面的数字以a进制的形式给出,要求转化为b进制输出。
#include <stdio.h> #include <string.h> #include <stdlib.h> #define MAXSIZE 60000 char in[MAXSIZE]; int oldbase,newbase; int a[MAXSIZE],b[MAXSIZE],r[MAXSIZE]; inline int getNum(char c) { if(c >= '0' && c <= '9') return c - '0'; if(c >= 'A' && c<= 'Z' ) return c - 'A' + 10; return c - 'a' + 36; } inline char getChar(int i) { if(i >= 0 && i <= 9) return i + '0'; if(i >= 10 && i <= 35) return i - 10 + 'A'; return i - 36 + 'a'; } inline void chToNum() { a[0] = strlen(in); for(int i=1;i<=a[0];i++) { a[i] = getNum(in[i-1]); } } void alter() { while(a[0] >= 1) { int i,t = 0; for(i=1;i<=a[0];i++) { t = t * oldbase + a[i]; b[ ++b[0] ] = t / newbase; t %= newbase; } r[ ++r[0] ] = t; b[0] = a[0]; for(i = 1; i <= b[0] && !b[i]; i++) ; for(a[0] = 0; i <= b[0]; i++) a[ ++a[0] ] = b[i]; memset(b,0,sizeof(b)); } } void print() { printf("%d %s\n%d ",oldbase,in,newbase); while(r[0]>=1) { printf("%c",getChar(r[ r[0]-- ])); } printf("\n\n"); } int main() { int n; while(scanf("%d",&n)!=EOF) { while(n--) { scanf("%d %d %s",&oldbase,&newbase,in); chToNum(); alter(); print(); } } return 0; }
相关文章推荐
- poj1220(高精度模版,进制转换)
- 【转】高精度的进制转换!!!!
- 进制转换 poj1220(多种进制转换) poj3191(负数进制)(注意 0)
- 高精度的进制转换!!!!
- 高精度的进制转换
- poj1220 (高精度任意进制转换)
- java学习小记 输入输出 字符串 函数 高精度 进制转换
- POJ 1220 NUMBER BASE CONVERSION(高精度进制转换)
- 【模拟高精度+进制转换】数学序列
- poj 1131 Octal Fractions(高精度小数进制转换) Java
- POJ 2635 高精度MOD 和 乱搞的进制转换
- poj 1131 Octal Fractions(高精度小数进制转换) Java
- poj 1220 NUMBER BASE CONVERSION 高精度进制转换
- poj 1131 进制转换 Java高精度
- poj1220:高精度进制转换模板题
- POJ1220(大数进制转换)
- 高精度进制转换 poj 1220 NUMBER BASE CONVERSION
- 高精度的进制转换
- pku 1220--NUMBER BASE CONVERSION(高精度进制转换)
- POJ 1220 高精度进制转换