标签:程序实现 inpu -- 表示 输入格式 bsp wrap algo pre
请你编一程序实现两种不同进制之间的数据转换。
共三行,第一行是一个正整数,表示需要转换的数的进制&n(2≤n≤16)&,第二行是一个n进制数,若n>10则用大写字母A-F表示数码10-15,并且该n进制数对应的十进制的值不超过1000000000,第三行也是一个正整数,表示转换之后的数的进制m(2≤m≤16)m(2≤m≤16)。
一个正整数,表示转换之后的mm进制数。
16 FF 2
11111111
给你一个N进制的数,让你转换成M进制的数。
用N进制转M进制会很麻烦,我们先把N进制的数转换成10进制的数,再把转换成10
进制的数转换成M进制。利用十进制过度一下。
#include<cstdio> #include<iostream> #include<algorithm> #include<cstring> #include<cmath> #include<map> using namespace std;//头文件 long long n,m; string s; long long len,he,sum,zs=1; long long mod,cd; long long a[101000]; int main(){ cin>>n; cin>>s; cin>>m; len=s.length(); //把N进制数转换为十进制 for(int i=len-1;i>=0;i--){ if(s[i]>=‘0‘&&s[i]<=‘9‘){//求出是s[i]所代表的数字 he=s[i]-‘0‘; } if(s[i]>=‘A‘&&s[i]<=‘Z‘){ he=s[i]-‘A‘+10; } sum+=he*zs;//把每一位的十进制数累加 zs*=n; } //把转换成的十进制数转换为M进制 while(sum!=0){ mod=sum%m;//取模 sum/=m; cd++; a[cd]=mod;//求出每一位的余数 } for(int i=cd;i>=1;i--){//倒序输出 if(a[i]>=10){ cout<<char(a[i]+55); } else{ cout<<a[i]; } } return 0; }
标签:程序实现 inpu -- 表示 输入格式 bsp wrap algo pre
原文地址:https://www.cnblogs.com/shanxx/p/12848281.html