zoukankan      html  css  js  c++  java
  • 集训作业 洛谷P1143 进制转换

    这个题目就是让我们实现进制的转换。

    我只会很简单的把他从一个别的进制转化成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;
    } 
    

    总的来说,这个题只要知道字符串的操作和如何转化就非常好做。

  • 相关阅读:
    数据结构与算法4—队列
    栈的应用——括号匹配
    迷宫求解
    python的socket编程
    数据结构与算法3—栈
    数据结构与算法2—链表
    数据结构与算法1—线性表
    增量解析
    ElementTree类
    节点序列化
  • 原文地址:https://www.cnblogs.com/lichangjian/p/12853164.html
Copyright © 2011-2022 走看看