蓝桥杯如何拿到省一?

去年是在考前半个月的时间刷了一遍真题并且很长一段时间在zz老师的指导下坚持刷力扣,混了个省一,只是后面错过了国赛,今年希望能够拿到国二今年开学以后就该要投入到考研的复习当中了,趁着寒假再过一遍真题熟悉一下eclipse的使用方法,刷一刷力扣熟悉算法(不过,感觉力扣的难度相对而言要更大些),4月2日考前再进行回顾,希望能够拿到国二,加油~~

寒假没能好好利用时间,今天已经是3月5日了,还有一个月的时间,每天抽空看看真题好啦,持续更新,顺便准备CCCC~

  • JDK版本:Window->Preferences->Compiler
  • 自动补全:Window->Preferences->Java->Editor->Content Assist:
    .ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghigklmnopqrstuvwxyz

2013年

世纪末的星期

1999年的12月31是周五,求最近的哪个99年12月31日是星期天?

  • 日期API-Calendar,1970年以后的可以用
public class _01世纪末的星期 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Calendar calendar= Calendar.getInstance();//获取实例
		for(int year=1999;year<10000;year+=100) {
			calendar.set(Calendar.YEAR, year);
			calendar.set(Calendar.MONTH, 11);//设置12月
			calendar.set(Calendar.DAY_OF_MONTH, 31);
			if(calendar.get(Calendar.DAY_OF_WEEK)==1) {
				System.out.println(year);
				break;
			}
		}
				
		Calendar calendar2=Calendar.getInstance();
		calendar2.set(1999, 11, 31, 0, 0);
		if(calendar2.get(Calendar.DAY_OF_WEEK)==6) {
			System.out.println(1999);			
		}		
		}
}

马虎的算式

满足:abcde=adbce (abcde代表1-9的不同的五个数字)的算式一共有多少种?

  • 枚举法解题,for循环嵌套if判断为不等

3振兴中华

从我做起振兴中华,有几种路线?

  • dfs 递归 重复 变化 边界
public class _03振兴中华 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int ans=f(0,0);
		System.out.println(ans);
	}
	private static int f(int i,int j) {
		if(i==3||j==4) return 1;
		return f(i+1,j)+f(i,j+1);		
	}
}

黄金连分数

保留100位小数

  • 前几项寻找规律为斐波拉契数列相邻两项的除
  • double无法表示100位小数,用BigInteger和BigDecimal
public class _04黄金连分数 {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		BigInteger a=BigInteger.ONE;
		BigInteger b=BigInteger.ONE;
		for(int i=3;i<10000;i++) {
			BigInteger t=b;
			b=a.add(b);
			a=t;
		}
		BigDecimal divide=new BigDecimal(a,110).divide(new BigDecimal(b,110),BigDecimal.ROUND_HALF_DOWN);
		System.out.println(divide.toPlainString().substring(0, 103));
	}
}

有理数类(填空题)

填空题:分数加法的补充

  • static class
return new Rational(this.ra*x.rb+x.ra*this.rb, this.rb*x.rb);

privata long gcd(long  a ,long b){
   if(b==0)  return a;
   return gcd(b, a%b);
 }   

三部排序(填空题)

填空题:整型数组中的数进行分类排序,负数在左端,正数在右端,0在中间,一次完成

  • 快速排序
  p++

  int []arr= {1,2,3,4,5,6};
  Arrays.sort(arr);
  for(int i=0;i<arr.length;i++) {
	  System.out.print(arr[i]+" ");
 }

错误票据

ID连续,开始的数字随机,一个ID重复,一个ID断号

输入:行号+每行内容不等的数据
2
5 6 8 11 9
10 12 9
输出:断号n,重复m
7 9

  • ArrayList是Java的链表类
  • list.add(“a”),list.add(2,“a”),list.get(i),list.remove(i),list.remove(“a”)
  • 对于输入数据的处理scanner.nextLine(); //吃掉整数后面的换行符
  • if(list.get(i).equals(list.get(i-1))) //集合元素使用equals进行比较
    b=list.get(i);
  • list.add(Integer.parseInt(split[j]));
public class _07 错误票据{
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scanner=new Scanner(System.in);
		ArrayList<Integer> list=new ArrayList<Integer>();
		int N=scanner.nextInt();
		scanner.nextLine(); //吃掉整数后面的换行符
		for(int i=0;i<N;i++) { //数据处理
			String line =scanner.nextLine();
			String[] splitStrings=line.split(" ");
			for(int j=0;j<splitStrings.length;j++) {
				list.add(Integer.parseInt(splitStrings[j]));
			}
		}		
		Collections.sort(list);
		int a=0,b=0; //局部变量
		for(int i=1;i<list.size();i++) {
			if(list.get(i)-list.get(i-1)==2) 
				a=list.get(i)-1;
			if(list.get(i).equals(list.get(i-1))) //集合元素使用equals进行比较
				b=list.get(i);
		}
		System.out.println(a+" "+b);
	}
}

``

幸运数字

幸运数字1,删去被2整除的数,得3为第二个幸运数字

import java.util.Scanner;

public class _08幸运数 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc=new Scanner(System.in);
		int m=sc.nextInt();
		int n=sc.nextInt();
		int[] a=new int[n];
		for(int i=0;i<n;i++) 
			a[i]=i*2+1;
		
		int l=1;//幸运数字下标为1,a[l]是幸运数字
		while(true) {
		int p=l+1;
		 for(int i=l+1;i<n;i++) {
			if((i+1)%a[l]==0) {}
			else{
				a[p]=a[i];
				p++;
			}			
		 }
		l++;
		if(a[l]>=n) break;
		}		
		int ans=0;
		for(int i=0;i<n;i++) {
			if(a[i]>=n) break;
			if(a[i]>m) ans++;			
		}		
	}
}

带分数

100表示为100=3+69258/714,1~9不重复,有11种表示方法
输出有多少种?

  • 递归框架求全排列
import java.util.Scanner;

public class _09带分数 {
	
	static int ans;
	private static int N;
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc=new Scanner(System.in);
		N=sc.nextInt();
		int[] arr= {1,2,3,4,5,6,7,8,9};
		f(arr,0);
		System.out.println(ans);
	}
   //确认某一个排列的第k位
	private static void f(int[] arr, int k) {
		// TODO Auto-generated method stub
		if(k==9) {//全部确认
			check(arr);
			return;
		}
		//选定第k位
		for(int i=k;i<arr.length;i++) {
			int t=arr[i];
			arr[i]=arr[k];
			arr[k]=t;
			
			//移交下一层去确认k+1位
			f(arr, k+1);
			
			//回溯
			t=arr[i];
			arr[i]=arr[k];
			arr[k]=t;
		}
	}
	
private static void check(int[] arr) {
	// TODO Auto-generated method stub
	for(int i=1;i<=7;i++) {
		int num1=toInt(arr,0,i);//加号前的数
		if(num1>=N) continue;
		for(int j=1;j<=8-i;j++) {
			int num2=toInt(arr, i, j);
			int num3=toInt(arr, i+j, 9-i-j);
			if(num2%num3==0&&num1+num2/num3==N)
				ans++;
		}
	}
}
private static int toInt(int[] arr, int pos, int length) {
	// TODO Auto-generated method stub
	int t=1;
	int ans=0;
	for(int i=pos+length-1;i>=pos;i--) {
		ans+=arr[i]*t;
		t*=10;
	}
	return ans;
 }
}

连号区间数

  • 判断ij连续区间,最大-最小
import java.util.Scanner;

public class _10连号区间数 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt();
		int[] arr=new int[n+1];
		for(int i=1;i<=n;i++) 
			arr[i]=sc.nextInt();
		int ans=0;
		for(int i=1;i<=n;i++) {
			int max=arr[i];
			int min=arr[i];
			for(int j=i;j<=n;j++) {
				if(arr[j]>max) max=arr[j];
				if(arr[j]<min) min=arr[j];
				if(i==j) ans++;
				else{//判断ij连续区间,最大-最小
					if(max-min==j-i)
						ans++;					
			}
		}
	}
 }
}
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值