您的位置:首页 > 其它

将十进制无符号整数转化为任意进制数(大数)

2015-09-29 23:05 239 查看
大数进制转换:

#include <cmath>
#include <ctime>
#include <cctype>
#include <climits>
#include <cstdio>
#include <cstdlib>
#include <cstring>

#include <map>
#include <set>
#include <queue>
#include <stack>
#include <string>
#include <vector>
#include <sstream>
#include <iostream>
#include <algorithm>

#define INF (INT_MAX / 10)
#define clr(arr, val) memset(arr, val, sizeof(arr))
#define pb push_back
#define sz(a) ((int)(a).size())

using namespace std;
typedef set<int> si;
typedef vector<int> vi;
typedef map<int, int> mii;
typedef pair<int, int> pii;
typedef long long ll;

const double esp = 1e-5;

#define N 50100
void consversion(char s[],char s2[],long d1,long d2)
{
long i,j,t,num;
char c;
num = 0;
for(i = 0;s[i]!='\0';i++)
{
if(s[i]<='9' && s[i]>='0')
t = s[i] - '0';
else
t = s[i] - 'A' +10;
num = num*d1+t;
}
i = 0;
while(1)
{
t = num%d2;
if(t<=9)
s2[i] = t+'0';
else
s2[i] = t+'A'-10;
num/=d2;
if(num == 0)
break;
i++;
}
for(j = 0;j<i/2;j++)
{
c = s2[j];
s2[j] = s[i-j];
s2[i-j] = c;
}
s2[i+1]='\0';
}

int main()
{
char s1[1000],s2[1000];
int d1,d2;
while(~scanf("%s%d%d",s1,&d1,&d2))
{
consversion(s1,s2,d1,d2);
printf("%s\n",s2);
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  学习笔记 大数 模板