目录
第一题
第二题
第三题
第四题
第五题
第六题
第七题
第八题
第九题
第十题
第一题
第二题255
一般来说第一题都是白给的,但是这个题目需要一些计算机网络的知识,不然就真的“白给”了!!!
简单来说一下吧,IPv4中 IP地址是32位二进制表示,分成四段,每段8位二进制,即2的八次方个数,*表示其中的一段,因为是从0开始的,所以最大是255
(个人见解哦,有问题欢迎评论区留言)
class test2{ int []a=new int[2040]; void method(){ for (int i=2;i<2021;i++){ if(2021%i==0){ for(int j=1;i*j<=2021;j++){ a[i*j]=1; } } } int t=0; for(int k=0;k<2040;k++){ if(a[k]==1) t++; } System.out.println(t); } }
第三题89
这个题目的话没啥难度,直接暴力解,但是我对它题目的表述表示很不理解(g应该是能被A和B整除才对吧!),我看了老半天,一度怀疑自己,不过根据它后面的举例可以明白意思,不影响做题!
class test3{ int []a=new int[2030]; void method(){ for(int i=1;i<=2021;i++){//这个地方i<=2021加等号主要是因为2021容易被漏掉 for(int j=1;j<=i;j++){//这个地方要j<=i,主要是i=1的时候容易被漏掉 for (int k=0;k 第四题1516
这个题目的话要细心一点,因为很容易做错,容易漏掉1和2021这两个数
第五题219
哈夫曼编码题
class test5{ void method(){ String s="FFEEFEAAECFFBDBFBCDA DACDEEDCCFFAFADEFBBA " + " FDCDDCDBFEFCEDDBFDBE EFCAAEECEECDCDECADDC DFAEACECFEADCBFECADF DFBAAADCFAFFCEADFDDA " + " EAFAFFDEFECEDEEEDFBD BFDDFFBCFACECEDCAFAF " + "EFAFCDBDCCBCCEADADAEBAFBACACBFCBABFDAFBEFCFDCFBCEDCEAFBCDBDDBDEFCAAAACCFFCBBAAEECFEFCFDEEDCACDACECFF " + " BAAAFACDBFFAEFFCCCDB FADDDBEBCBEEDDECFAFFCDEAFBCBBCBAEDFDBEBB " + "BBABBFDECBCEFAABCBCFFBDBACCFFABEAEBEACBBDCBCCFADDCACFDEDECCCBFAFCBFECAACAFBCFBAF"; char[] g=s.toCharArray(); int a=0; int b=0; int c=0; int d=0; int e=0; int f=0; for(int i=0;i 第六题直接暴力就完事儿了!!!
class test6{ void method(){ Scanner scanner = new Scanner(System.in); int p=scanner.nextInt(); int t=scanner.nextInt(); int k=t/12+1; System.out.println(p*k); } }第七题送分题,哈哈✨
class test7{ void method(){ Scanner scanner = new Scanner(System.in); int a=scanner.nextInt(); int b=scanner.nextInt(); int c=scanner.nextInt(); int k=Math.max(a,b); int j=Math.max(a,c); int t=Math.max(k,j); if(2*t*t==(a*a+b*b+c*c)) System.out.println("YES"); else System.out.println("NO"); } }第八题读完题目,直接暴力,没啥技巧可言,找一个最大边,然后用一下勾股定理就好了路♀️
第九题哈哈哈,这个题目当时没想出来,等考完六级的时候我再仔细思考一下!!
class test9 { void method() { Scanner scanner = new Scanner(System.in); int N = 1020; double p = Math.pow(10, 9) + 7; int h = (int) p; int n = scanner.nextInt(); int[] f = new int[N]; int k = n / 2; for (int i = 1; i <= n; i++) { f[0] = 1; f[i] = 1; for (int j = i - 1; j > 0; j--) { f[j] = (f[j - 1] + f[j]) % h; } } System.out.println(f[k]); } void method_2() { //推出转态方程后,可以参考蓝桥杯第一次模拟赛中利用杨辉三角求组和数问题的方法 int p=1000000007; int[][] a = new int[1010][1010]; int t = 1000000007; a[0][0] = 1; Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); for (int i = 1; i <= n; i++) { a[i][0] = 1; for (int j = 1; j <= i; j++) { a[i][j]=(a[i-1][j]+a[i-1][j-1])%p; } } System.out.println(a[n][(n+1)/2]); } }第十题这道题目还是组合数的问题,关键在于找出转态方程,这里我给出了两种解法,第二种解法在我上一篇博客《蓝桥杯第一次模拟赛JAVA题解》的题解中有出现!
这个题目当时也没在出来,六级考完再仔细想想!!
裡裡裡裡裡裡裡裡
最后总结如下:
第二次模拟赛比第一次的难度略有提升,不过跟真题比起来还是差点意思,然后我有两题没做出来(我是算法小菜鸡),等六级结束再继续肝算法!!!!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)