集训作业 洛谷P1143 进制转换
2024-09-07 18:05:01
这个题目就是让我们实现进制的转换。
我只会很简单的把他从一个别的进制转化成10进制,然后再继续转化成目标进制。
#include<iostream>
#include<cstdio>
#include<map>
#include<cmath>
using namespace std;
long long a,b,shu,hh,e[100];
string s,jg;
string sz=0123456789ABCDEF;//这是最后用来转化输出的,我不想把10以内和以外的数特判,所以写了个这东西。
map<char,int>mp;
int main()
{
cin>>a;
cin>>s;
cin>>b;
mp['A']=10;//转化,表示‘a'的值是10;
mp['B']=11;
mp['C']=12;
mp['D']=13;
mp['E']=14;
mp['F']=15;
for(int i=0;i<s.length();i++)
{
if(s[i]-'0'>=0&&s[i]-'0'<=9)//如果不是10或以外的数,直接-’0‘,然后计算。
{
shu+=(s[i]-'0')*pow(a,s.length()-i-1);
}else//是10或以外的数就看看它对应的是哪个。
{
shu+=mp[s[i]]*pow(a,s.length()-i-1);
}
}
while(shu!=0)//转化成目标进制的数。
{
e[hh]=shu%b;
hh++;
shu/=b;
}
for(int i=hh-1;i>=0;i--)由于是从第到高转化的,所以要反过来输出。
{
cout<<sz[e[i]];
}
return 0;
}
总的来说,这个题只要知道字符串的操作和如何转化就非常好做。
最新文章
- 大型网站的灵魂&mdash;&mdash;性能
- CSS3 Media Queries 实现响应式设计
- [UML]UML系列——包图Package
- OpenSSL漏洞补救办法详解(转)
- form中的GET与POST
- atitit.无线网卡 不能搜索到WiFi 无线路由信号的解决不能上网
- 【背景建模】VIBE
- 虚拟机guest为windows7的环境下安装破解版simplify3d_3.0.2
- js去掉所有空格
- 除trigger()方法外的jquery手动触发事件
- Android灯光系统--深入理解背光灯
- Xamarin.iOS + MvvmCross: UIPickerView data binding, SelectedItemChanged event
- Linux命令之远程下载命令:wget
- LeetCode之“动态规划”:House Robber &;&; House Robber II
- Python eval 函数妙用
- Kubernetes 笔记 06 豌豆荚之旅(一)
- Python面向对象1:类与对象
- hibernate框架学习之增删改查helloworld
- linux下使用命令修改IP地址
- js函数式编程——蹦床函数