目录
第一题🎈
第二题🎈
第三题🎈
第四题🎈
第五题🎈
第六题🎈
第七题🎈
第八题
第九题🎈
第十题
第一题🎈
?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<j;k++ ){
if(i==(j*j-k*k)){
a[i]=1;
}
}
}
}
int l=0;
for(int t=1;t<2030;t++){
if(a[t]==1)
l++;
}
System.out.println(l);
}
}
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<s.length();i++){
if(g[i]=='A')a++;
if(g[i]=='B')b++;
if(g[i]=='C')c++;
if(g[i]=='D')d++;
if(g[i]=='E')e++;
if(g[i]=='F')f++;
}
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);
System.out.println(e);
System.out.println(f);
}
}
?直接暴力就完事儿了!!!
第六题🎈
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题解》的题解中有出现!
第十题
这个题目当时也没在出来,六级考完再仔细想想!!?
🎉🎉🎉🎉🎉🎈🎈🎈🎈🎈🎈🎈🎆🎆🎆🎆🎆🎆🧨🧨🧨🧨🧨🧨🧨🧨🎉🎉🎉🎉🎉🎉
最后总结如下:
第二次模拟赛比第一次的难度略有提升,不过跟真题比起来还是差点意思,然后我有两题没做出来(我是算法小菜鸡),等六级结束再继续肝算法!!!!
|