蓝桥杯准备笔记(持更2021.04.12)

Notes

2020.04.10 BEGIN1-4 + BASIC1-3
  1. 等比数列等差数列求和时,大概率是会超限的,所以可能会用到长整型long,不要采用for循环递加,会超时,直接用公式
    (1)等差数列求和公式S = n(a1+an)/2
    (2)等比数列求和公式S = [a1(1-q^n)]/(1-q)
  2. 规定小数点位数输出和规定位数输出(前加0)
    创建小数格式DecimalFormat对象dFormat
    使用dFormat调用format方法输出
//规定保留七位小数
DecimalFormat dFormat = new DecimalFormat("#0.0000000");
System.out.print(dFormat.format(r));
//规定不足两位前添0
DecimalFormat dFormat = new DecimalFormat("00");
System.out.print(dFormat.format(h));
  1. 创建数组,不会吧不会吧不会有人连数组都不会创建吧(记得开大一点)
int arr[] = new int[n];
int a[][] = new int [m][n];
  1. 十进制转其他进制字符串
//二进制
String s2 = Integer.toBinaryString(i);
//十六进制
String s16 = Integer.toHexString(i) ;
//八进制
String s8 = Integer.toOctalString(i); 
  1. 本来打算看代码的……实在没忍住又上手敲了……
    整型和字符直接强制转换即可
int num = (int)'A'+ i;
char c = (char)num;


2020.04.12 BASIC4-17
  1. 转换大小写
s.toUpperCase(); //转换为大写
s.toLowerCase(); //转换为小写
  1. 字符串下标记法
s.charAt(i);
  1. 字符串过长时可使用StringBuffer类,顺便一提BASIC-12重做的时候给我气吐血了因为E的二进制写错了导致找了半个小时bug我真傻
  2. StringBuffer中的append()方法可在字符串末尾添加字符
  3. Arrays.sort()数组从小到大排序
  4. 写判断素数的方法时,循环终止条件为i<=Math.sqrt(i),不要忘记等于的情况
  5. 矩阵幂次方乘法时,记得矩阵0次幂是单位矩阵(对角线为0),每乘完一次讲结果矩阵ans清零。


2020.04.13 BASIC18-34
  1. 两矩形相交求相交矩形面积,可以通过比较横纵坐标,例如选择两右边(横坐标大)的较小值,两上边(纵坐标大)的较小值确定右上角,同样方法确定左下角,此时判断右上角的横纵坐标比左下角的横纵坐标均大,否则无法相交。
  2. 贪心——每次只考虑一步
  3. 如果有特定输出,一定要复制啊!不然单词打错了太亏了就
  4. 字符串的子串
str = s.substring(index1, index2);
  1. StringBuilder/StringBuffer可进行指定下标元素删除,如需转化为字符串格式,需调用toString()
sBuilder.deleteCharAt(index);
sBuffer.deleteCharAt(index);
s1 = sBuilder.toString();
s2 = sBuffer.toString();
  1. 字符串数组创建
String[] s = new String[] {"zj", "wyb", "xz"};
String[] str = new String [10];
  1. 回型取数中,已取标记为-1
  2. 数组排序
Arrays.sort(arr);
Arrays.sort(arr, fromindex, toindex); //toindex不在排序范围内


2020.04.13 ALGO1-
  1. 最大公因数gcd和最小公倍数
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scanner = new Scanner(System.in);
		int a = scanner.nextInt();
		int b = scanner.nextInt();
		System.out.println("最小公倍数:" + a * b / gcd(a, b));
		System.out.println("最大公因数:" + gcd(a, b));

	}

	public static int gcd(int a, int b) {
		if (a < b) {
			int t;
			t = a;
			a = b;
			b = t;
		}
		while (b != 0) {
			if (a == b) {
				return a;
			} else {
				int t = a % b;
				a = b;
				b = t;
			}
		}
		return a;
	}

}

  1. 如果是明显的算法题,不要慌,画图画图
  2. 对一个超大数字取模的时候先创建一个变量为这个数字再进行运算。
  3. 注意循环变量啊出问题很大可能是i和j分不清
  4. 可,我已经看不懂寒假写的dfs了
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值