第十四届蓝桥杯集训——练习解题阶段(无序阶段)-基础练习 十六进制转十进制

简介: 第十四届蓝桥杯集训——练习解题阶段(无序阶段)-基础练习 十六进制转十进制



 

前言

       最近的一些文章都可能会很碎,写到哪里是哪里,过一阵子会具体的整理一遍,这里其它的类型题先往后排一排,因为蓝桥最后考的也就是对题目逻辑的理解能力,也就是dp分析能力了,所以就主要目标定在这里,最近的题目会很散,很多,基本上都是网罗全网的一些dp练习题进行二次训练,准备比赛的学生底子薄的先不建议看啊,当然,脑子快的例外,可以直接跳过之前的一切直接来看即可,只需要你在高中的时候数学成绩还可以那就没啥问题,其实,dp就是规律总结,我们只需要推导出对应题目的数学规律就可以直接操作,可能是一维数组,也可能是二维数组,总体来看二维数组的较多,但是如果能降为的话建议降为,因为如果降为起来你看看时间复杂度就知道咋回事了,那么在这里祝大家能无序的各种看明白,争取能帮助到大家。


基础练习 十六进制转十进制

资源限制

内存限制:512.0MB   C/C++时间限制:1.0s   Java时间限制:3.0s   Python时间限制:5.0s

问题描述

  从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。

  注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。

样例输入

FFFF

样例输出

65535

这个题目其实是非常简单的,当然,那是使用函数的情况下,我这里有一篇文章是直接函数处理的。

第十四届蓝桥杯集训——JavaC组第八篇——进制转换

用起来会很方便,当然这只是Java的,接下来我们看看其它语言以及Java语言的非函数写法。

C语言

这里看着看不是太麻烦,就是中间的循环还是没那么好理解的呢。

#include<stdio.h>
#include<string.h> 
#include<math.h>
int main()
{ 
 double sum=0,x;
 char a[8];
 int len,i=0;
 gets(a);
 len=strlen(a);
 while(len)
 {
  if(a[len-1]>='A'&&a[len-1]<='F')
    x=(a[len-1]-'7')*pow(16,i++);
  else
    x=(a[len-1]-'0')*pow(16,i++);
  sum+=x;
  len--;
 }
 printf("%.0lf",sum);
 return 0;
 
 }

C++语言

逻辑是一样的。

#include<iostream>
#include<string>
using namespace std;
int main()
{
    string s;
    while(cin>>s)
    {
        int leth=s.length();
        long long sum=0;
        for(int i=0;i<leth;i++)
        {
            if(s[i]>='A'&&s[i]<='F')
            {
                sum=sum*16+s[i]-'A'+10;
               // cout<<sum<<endl;
            }
            else
            {
                sum=sum*16+s[i]-'0';
                //cout<<sum<<endl;
            }
        }
        cout<<sum<<endl;
    }
    return 0;
}

Java语言

java的非函数写法,效率其实蛮高的。

import java.io.*;
public class Main {
public static void main (String args[])throws Exception{
  BufferedReader buf=new BufferedReader(new InputStreamReader(System.in));
  String s=buf.readLine();
  char c[]=s.toCharArray();
   int n=c.length;
   long sum=0;
   for(int i=0;i<n;i++){
     
     if((int)c[i]-48>9){
       if(c[i]=='A')
        sum+=10*Math.pow(16,n-i-1);
       else if(c[i]=='B')
         sum+=11*Math.pow(16,n-i-1);
       else if(c[i]=='C')
         sum+=12*Math.pow(16,n-i-1);
       else if(c[i]=='D')
         sum+=13*Math.pow(16,n-i-1);
       else if(c[i]=='E')
         sum+=14*Math.pow(16,n-i-1);
       else if(c[i]=='F')
        sum+=15*Math.pow(16,n-i-1);
     }
     else{
      sum+=((int)c[i]-48)*Math.pow(16,n-i-1);
     }
   }
   
    System.out.println(sum);
}
}

Python语言

Python就不废话了,直接上函数。

n1=int(input(),16)
print(n1)

总结

对于进制转换就不多做陈述了,我们在高中的时候也学习过,并且一般都是有函数来直接解决的,有兴趣可以看看几种语言的具体实现过程。

相关文章
|
7月前
|
人工智能 算法 Java
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1005 数字游戏
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1005 数字游戏
114 0
|
7月前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1007 印章
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1007 印章
67 0
|
7月前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1006 拿金币
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1006 拿金币
72 0
|
7月前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1004 无聊的逗
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1004 无聊的逗
96 0
|
7月前
|
人工智能 算法 Java
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-992 士兵杀敌(二)
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-992 士兵杀敌(二)
89 1
|
7月前
|
Java C语言 C++
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1000 kAc给糖果你吃
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1000 kAc给糖果你吃
87 0
|
7月前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-999 数的潜能
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-999 数的潜能
91 0
|
7月前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-997 粘木棍
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-997 粘木棍
96 0
|
7月前
|
机器学习/深度学习 算法 Java
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-996 车的放置
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-996 车的放置
95 0
|
7月前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-986 藏匿的刺客
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-986 藏匿的刺客
99 0