九度oj1080 大数的进制转换
2017-09-04 20:13
134 查看
大数的进制转换,不需要先转换成十进制,再转换成相应的进制,这是转自别人的博客:点击这里查看
因为看了上面博主的代码,所以自己也有很大的收获,但是感觉他那个下面写的有点不好理解,我稍微改变了一点点也是顺利通过,贴代码供大家参考:
因为看了上面博主的代码,所以自己也有很大的收获,但是感觉他那个下面写的有点不好理解,我稍微改变了一点点也是顺利通过,贴代码供大家参考:
#include<iostream> #include<cstring> #include<ctype.h>//用来判断是否是字母 using namespace std; int main() { int M,N;//将M进制的数X转换为N进制的数输出 string X; while(cin>>M>>N) { cin>>X; int data[1010]; int output[1010]; int len=X.size(); for(int i=0;i<len;i++) { if(isalpha(X[i])) data[i]=X[i]-'A'+10;//转换成整数 else data[i]=X[i]-'0'; } int sum=1,k=0; while(sum) { sum=0; for(int i=0;i<len;i++) { int d=data[i]/N; sum+=d;//用来判断多次循环后商是否为0 if(i==len-1)//每次到最后一位就将其取余保存在数组中 { output[k++]=data[i]%N; } else//否则就利用进制转换规则,注意后面乘M { data[i+1]+=(data[i]%N)*M; } data[i]=d;//保存每一位的商 } } if(k==0) cout<<'0'<<endl; else { for(int i=k-1;i>=0;i--)//倒序将N进制的数输出 { if(output[i]>9) cout<<(char)(output[i]+'a'-10); else cout<<output[i]; } cout<<endl; } } return 0; }
相关文章推荐
- [汇编]神奇的进制转换以及计算器的使用
- 问题一百四十一:进制转换
- ZUFE 林教主的面试(数学题 小数进制转换)
- C语言入门-数字的进制转换
- HDU 2031 进制转换
- C# 进制转换
- C# 进制转换
- Day04_数据类型占位符使用及进制转换
- 浅谈大数的进制转换
- HDU 2031 - 进制转换
- 山东理工大学ACM平台题答案关于C语言 1252 进制转换
- 黑马程序员--数组(三)进制转换
- shell中的进制转换
- 进制转换
- 进制转换
- 【学习笔记】〖九度OJ〗题目1138:进制转换
- 算法 大数计算:加减乘除,模,阶乘,进制转换(大数除法取余)
- 【数据结构】栈应用之进制转换
- HDU 4278 (POJ 2719有点不同)Faulty Odometer(进制转换)
- java基本数据类型及计算机的原码,反码,补码,进制转换