前言
最近的一些文章都可能会很碎,写到哪里是哪里,过一阵子会具体的整理一遍,这里其它的类型题先往后排一排,因为蓝桥最后考的也就是对题目逻辑的理解能力,也就是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
这个题目其实是非常简单的,当然,那是使用函数的情况下,我这里有一篇文章是直接函数处理的。
用起来会很方便,当然这只是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)
总结
对于进制转换就不多做陈述了,我们在高中的时候也学习过,并且一般都是有函数来直接解决的,有兴趣可以看看几种语言的具体实现过程。