1 条题解
-
-2wanglongbang (njnu19180103) LV 10 @ 2019-04-27 21:31:17
// 进制转换.cpp : Defines the entry point for the console application.
////#include "stdafx.h"
#include<iostream>
#include<cstdio>
#include<string>
using namespace std;char z[20]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J'};
void zhuan(int n,int m);
long hexToDec(string source,int k);
int getIndexOfSigns(char ch);int main()
{
// freopen( "data\Input\input8.txt","r",stdin);
// freopen("data\Output\output8.txt","w",stdout);
int k,r,x;
string n,m;
cin>>k>>m;
cin>>r>>n;
cin>>x;
int x1,x2;
x1=hexToDec(m ,k);
x2=hexToDec(n ,r);
int y=x1+x2;
zhuan(y,x);
//string ans="";
//cin>>n>>r;
//cout<<n<<"=";
//zhuan(n,r);
//printf("(base%d)",r);
//cout<<hexToDec( "110001" ,-2)<<endl;;
return 0;}
//k进制转十进制
long hexToDec(string source,int k)
{
long sum = 0;
long t = 1;
int i, len;
len = source.length();
for(i=len-1; i>=0; i--)
{
sum += t * getIndexOfSigns(source[i]);//*(source + i)
t *= k;
}
return sum;
}
int getIndexOfSigns(char ch)
{
if(ch >= '0' && ch <= '9')
{
return ch - '0';
}
if(ch >= 'A' && ch <='J')
{
return ch - 'A' + 10;
}
//if(ch >= 'a' && ch <= 'f')
//{
// return ch - 'a' + 10;
//}
return -1;
}
//十进制转r进制
void zhuan(int n,int r)
{
if(n==0) return ;
int m=n%r;//m为余数
int k=n/r;//k为商
//如果余数小于0,转化为正数
if(m<0)
{
m-=r,k++;//k++等价于商++;
}
//将余数转化为ascll码方便输出,省略了一个数组
if(m>=10) m='A'+m-10;
else m+='0';zhuan(k,r);
printf("%c",m);//注意,因为结果为余数倒序,输出要写在递归后面,不然会顺序输出
return ;
}
- 1
信息
- ID
- 1032
- 难度
- 4
- 分类
- (无)
- 标签
- (无)
- 递交数
- 41
- 已通过
- 19
- 通过率
- 46%
- 被复制
- 5
- 上传者