概述
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 总结
- 一、进制转换问题
- 二、特殊回文数
- 1.方法一
- 2.方法二
- 尾言
总结
这一周就要面临蓝桥杯考试了,但我却怎么也重视不起来,可能是自己功底太差了吧,想获奖实力也不允许,也没有什么动力,更不知道这一段时间练习算法的意义。我甚至还网上搜索了写算法题有什么用。网上的回答也就是面试的时候考官会问如果自己算法功底强的话可以惊艳考官,然后写算法可以锻炼自己的思维能力,良好的思维能力在生活的多个方面来说都是一种优势吧,可对于我来说,我毕业不慌着马上找工作所以练习算法在这方面只能说一个更加更加更加长远的准备而已,在锻炼思维方面,我想我学习高数、离散、物理来锻炼思维不是更香?既能保障我期末拿个好成绩又对我考研有利。所以也因此,我对写算法题还是没太多的动力。
但毕竟交了300块而且小组这一段也留了时间让练习算法,自己或多或少还是要为这次蓝桥杯比赛做点准备。当然任何东西刚入门都是很难的,也因此,我每看一道基础的算法题读完题后都是去网上搜别人咋写,因为自己没思路…
下面便是最近我写的几道基础题的心得体会
一、进制转换问题
蓝桥杯题库中有三道基础的进制转换
1.16进制转10进制
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
public static void main (String[]args) {
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
BigInteger s = new BigInteger(str,10);
String r = s.toString(16).toUpperCase();
System.out.println(r);
}
}
因为输入中涉及字母所以先用字符串接收,又因为tostring()方法括号里是什么就能转换成什么类型,但前提是对int类型转换,而且本题的数可以取到很大超出int类型范围,所以用BigInteger合适同时要注意输出格式为大写字母所以用到了.toUpperCase()方法。
- 10进制转16进制
import java.math.BigInteger;
import java.util.Scanner;
public class Main2 {
public static void main(String[] args) {
Scanner sc =new Scanner(System.in);
String str = sc.nextLine();
BigInteger r = new BigInteger(str,16);
System.out.println(r);
}
}
这个思路跟上面类似也没啥说的
3.16进制转8进制
import java.math.BigInteger;
import java.util.Scanner;
public class Main2 {
public static void main(String[] args) {
Scanner sc =new Scanner(System.in);
int a = sc.nextInt();
for(int i=0;i<a;i++) {
String r = sc.next();
BigInteger s = new BigInteger(r,16);
String t = s.toString(8);
System.out.println(t);
}
}
}
总之,这一个类似的思路可以解决这样的进制转换问题
二、特殊回文数
1.方法一
代码如下:
import java.util.Scanner;
public class Main3 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n =scanner.nextInt();
for(int i=10000;i<=999999;i++ ){
if(i>100000) {
int a = i/100000%10;
int b = i/10000%10;
int c = i/1000%10;
int d = i/100%10;
int e = i/10%10;
int f = i%10;
if(a==f&&b==e&&c==d&&a+b+c+d+e+f==n) {
System.out.println(i);
}
}else {
int a =i/10000%10;
int b =i/1000%10;
int c =i/100%10;
int d =i/10%10;
int e =i%10;
if(a==e&&b==d&&a+b+c+d+e==n) {
System.out.println(i);
}
}
}
}
}
这中方法就是把每个数字都表示出来,分别考虑各自满足的情况
2.方法二
代码如下(示例):
import java.util.Scanner;
public class Main4 {
public static void main(String[] args) {
Scanner sc =new Scanner(System.in);
int n = sc.nextInt();
for(int i =1;i<=9;i++) {
for(int j =0;j<=9;j++) {
for(int k =0;k<=9;k++) {
if(2*(i+j)+k==n) {
System.out.println(i*10000+j*1000+k*100+j*10+i);}
}
}
}
for(int i =1;i<=9;i++) {
for(int j =0;j<=9;j++) {
for(int k =0;k<=9;k++) {
if(2*(i+j+k)==n) {
System.out.println(i*100000+j*10000+k*1000+k*100+j*10+i);}
}
}
}
}
}
这种是考虑一半的情况逐一考虑然后最后求出结果
尾言
还有几道算法题记录在自己的笔记中如果有时间再写在博客中把。
最后
以上就是强健香氛为你收集整理的一周算法入门练习总结总结一、进制转换问题二、特殊回文数尾言的全部内容,希望文章能够帮你解决一周算法入门练习总结总结一、进制转换问题二、特殊回文数尾言所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复