Code[VS] 2112 进制转换
来源:互联网 发布:机械零件加工制作软件 编辑:程序博客网 时间:2024/06/11 17:49
转载请注明出处:http://blog.csdn.net/u013598409
【题意】
给出一个 P 进制整数 N,求 N 的 Q 进制表示。其中 0<= N <= 32767 , 2 <= P <= 16, 2 <= Q <= 16。大于 9 的数字用 A、B、C、D、E、F 表示。
【分析】
直接字符串读入,然后存到stack进行P进制转10进制。
注意C++党不能用字符读入,不然无良的LINUX会让你WA掉的。
然后在10进制转Q进制就行了,注意ABCDEF的问题,就是转化为字符输出就行了。
还有一点,就是对于0要特判一下,如果为0直接输出,这是一大坑点。
【实现】
#include <cstdio>
#include <cstring>
#include <cstdlib>
using namespace std;
int stk[40],mtp;
int p,q,n;
int main(void)
{
char s[40]; int len;
scanf("%d%d%s",&p,&q,s);
len=strlen(s);
for (int i=0;i<len;i++)
stk[++stk[0]]=('A'<=s[i]&&s[i]<='F'?s[i]-55:s[i]-'0');
if (stk[0]==1&&!stk[1])
{
printf("0\n");
return 0;
}
for (int i=stk[0],mtp=1;i;i--,mtp*=p) n+=stk[i]*mtp;
memset(stk,0,sizeof stk);
for (int i=n;i;i/=q) stk[++stk[0]]=i%q;
for (int i=stk[0];i;i--) printf("%c",0<=stk[i]&&stk[i]<=9?stk[i]+'0':stk[i]+55);
printf("\n");
return 0;
}
【小结】进制转换:注意0的特殊性
0 0
- Code[VS] 2112 进制转换
- VS Code
- VS Code
- VS Code
- VS Code
- VS Code
- vs code
- VS Code
- 进制转换(栈的应用code)
- 【VS开发】字符串进制等转换关系及方法
- Software architecture vs code
- Code[VS] 1212 最大公约数
- CODE[VS] 2597 团伙
- CODE[VS] 1201
- CODE[VS] 1202
- CODE[VS] 1203
- CODE[VS] 1206
- CODE[VS] 2235
- 改变
- OC面向对象三大特征
- pat1010 Radix
- Android项目使用appcompat_v7时遇到的问题
- Oracle 统计行数
- Code[VS] 2112 进制转换
- 给ios初学者的建议
- 法
- UVa 10723 Cyborg Genes(LCS变种)
- LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
- LCOJ - Fraction to Recurring Decimal
- DS18B20组件
- OC属性与方法的总结
- 以后我要好好写博客了