大家好,我是刘家良
这篇题解是我的第二篇题解。
题目描述
请你编一程序实现两种不同进制之间的数据转换。
输入格式
共三行,第一行是一个正整数,表示需要转换的数的进制n(2≤n≤16)n(2≤n≤16),第二行是一个n进制数,若n>10n>10则用大写字母A-FA−F表示数码10-1510−15,并且该nn进制数对应的十进制的值不超过10000000001000000000,第三行也是一个正整数,表示转换之后的数的进制m(2≤m≤16)m(2≤m≤16)。
输出格式
一个正整数,表示转换之后的mm进制数。
输入输出样例
输入 #1
16 FF 2
输出 #1
11111111
思路
我的思路是,先用字符串string输入一个数,把他转成int类型的一个数,在进行转进制操作
代码如下:
#include<bits/stdc++.h>//万能头文件 using namespace std; int n,m,k='1'-1,f='A'-10,r,sum,w[1100005],o; string a;//输入用的字符串 int main(){ cin>>n>>a>>m; r=a.size()-1; int d,s=n; for(int i=0;i<=a.size()-1;i++){ if(a[i]>='0' && a[i]<='9') d=a[i]-k; else d=a[i]-f; if(r!=0){ s=n; for(int j=1;j<r;j++) s*=n; d*=s; sum+=d; } else sum+=d; r--; } for(;sum>0;sum/=m) w[++o]=sum%m; for(int i=o;i>=1;i--){ if(w[i]<10) cout<<w[i]; else cout<<char(w[i]+f); } cout<<endl; return 0; }