高精度进制转换
2016-03-18 23:45
239 查看
高精度进制转换
传入参数约定:传入第一个参数为string类型,第二第三均为int型,返回值为string类型
算法思想:模拟手工进制转换。
算法复杂度:o(n^2)。
#include<iostream> #include<algorithm> using namespace std; //将字符串表示的10进制大整数转换为m进制的大整数 //并返回m进制大整数的字符串 bool judge(string s) //判断串是否为全零串 { for(int i=0;i<s.size();i++) if(s[i]!='0') return 1; return 0; } string solve(string s,int n,int m) //n进制转m进制只限0-9进制,若涉及带字母的进制,稍作修改即可 { string r,ans; int d=0; if(!judge(s)) return "0"; //特判 while(judge(s)) //被除数不为0则继续 { for(int i=0;i<s.size();i++) { r+=(d*n+s[i]-'0')/m+'0'; //求出商 d=(d*n+(s[i]-'0'))%m; //求出余数 } s=r; //把商赋给下一次的被除数 r=""; //把商清空 ans+=d+'0';//加上进制转换后数字 d=0;//清空余数 } reverse(ans.begin(),ans.end());//倒置下 return ans; } int main() { string s; while(cin>>s) { cout<<solve(s,10,7)<<endl; } return 0; }
相关文章推荐
- Oracle 队列锁类型 Oracle Enqueue Lock Type Reference including 11g new locks
- 大数据第8天作业
- find命令学习
- Error inflating class android.widget.CheckBox
- Java day06 多态 (类型提升,向下转型)
- delphi 精要-读书笔记(内存分配释放)
- Android为CustomView在xml中设置属性
- linux服务器运维 -- 路线、架构
- 高精度GCD
- 驱动对象和设备对象的区别
- 【Web】写个HTML页面去调试HTTP接口方便些
- WorldWind源码剖析系列:WorldWind如何确定与视点相关的地形数据的LOD层级与范围
- r.js 配置文件 example.build.js 不完整注释
- spoj TSUM - Triple Sums fft+容斥
- Jpa实体VO使用继承的实体的做法@MappedSuperclass注解的使用
- enq: TX – row lock/index contention、allocate ITL等待事件
- POJ 3694 Network 边双连通分量
- 和为S的连续正数序列
- 二进制包安装MySQL数据库
- codeforces630K(容斥原理)