洛谷 P1143 进制转换
2018-03-13 21:45
239 查看
洛谷P1143 进制转换
本题题解为转载
输入数据共有三行,第一行是一个正整数,表示需要转换的数的进制n(2≤n≤16),第二行是一个n进制数,若n>10则用大写字母A~F表示数码10~15,并且该n进制数对应的十进制的值不超过1000000000,第三行也是一个正整数,表示转换之后的数的进制m(2≤m≤16)。输出格式:
输出仅一行,包含一个正整数,表示转换之后的m进制数。
本题题解为转载
题目描述
请你编一程序实现两种不同进制之间的数据转换。输入输出格式
输入格式:输入数据共有三行,第一行是一个正整数,表示需要转换的数的进制n(2≤n≤16),第二行是一个n进制数,若n>10则用大写字母A~F表示数码10~15,并且该n进制数对应的十进制的值不超过1000000000,第三行也是一个正整数,表示转换之后的数的进制m(2≤m≤16)。输出格式:
输出仅一行,包含一个正整数,表示转换之后的m进制数。
输入输出样例
输入样例#1: 复制16 FF 2
#include<cstdio> #include<iostream> #include<cstring> #include<algorithm> using namespace std; int n,m,l; //先把n进制转十进制,再把十进制转成m进制 char njz[25],mjz[25]; int power(int n,int t) { //用来计算n进制下每一位的幂,从而转换成十进制 int ans=1,i; for(i=0;i<t;i++) ans*=n; return ans; } int nzh() { //n进制转十进制 int t,sjz=0; t=l; for(int i=0;i<=l;i++) { if(njz[i]<='9') sjz+=power(n,t)*(njz[i]-'0'); else sjz+=power(n,t)*(njz[i]-'A'+10);//这一位如果为字母,要转换成对应的十进制数 t--; } return sjz; } void szh() { //十进制转m进制 int i=1,sj; sj=nzh(); while(sj>0) { if(sj%m<10) mjz[i]=sj%m+'0'; else mjz[i]=sj%m-10+'A';//同上的特判,十六进制余11,11 11-10+‘A’为B i++; sj/=m; } for(int j=i-1;j>=1;j--) //此处没用栈,所以要从后往前输出 putchar(mjz[j]); } int main() { scanf("%d\n%s\n%d",&n,njz,&m); l=strlen(njz)-1; //l就是n进制最高位的权 szh(); return 0; }输出样例#1: 复制
11111111
相关文章推荐
- 洛谷P2084 进制转换
- 洛谷 P1017 进制转换
- 洛谷—— P1017 进制转换
- 洛谷 P1017 进制转换
- [NOIP2000] 提高组 洛谷P1017 进制转换
- 洛谷P1017 进制转换
- 洛谷1017 进制转换
- 洛谷 P2084 进制转换
- 洛谷 P1017 进制转换
- 洛谷 P1017 [NOIP2000 T1] 进制转换
- [洛谷1143]进制转换
- 洛谷P1017-进制转换
- 洛谷【P2084】进制转换
- 【洛谷 1017】进制转换
- 洛谷1017 进制转换
- 洛谷1017 进制转换 解题报告
- [洛谷1017]进制转换
- 洛谷P1017 进制转换
- 洛谷 P1017 进制转换
- BZOJ 1046 洛谷 P2215 [HAOI2007] 上升序列