目錄
第一題🎈
第二題🎈
第三題🎈
第四題🎈
第五題🎈
第六題🎈
第七題🎈
第八題
第九題🎈
第十題
第一題🎈

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題解》的題解中有出現!
第十題

這個題目當時也沒在出來,六級考完再仔細想想!!
🎉🎉🎉🎉🎉🎈🎈🎈🎈🎈🎈🎈🎆🎆🎆🎆🎆🎆🧨🧨🧨🧨🧨🧨🧨🧨🎉🎉🎉🎉🎉🎉
最后總結如下:
第二次模擬賽比第一次的難度略有提升,不過跟真題比起來還是差點意思,然后我有兩題沒做出來(我是演算法小菜雞),等六級結束再繼續肝演算法!!!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/382819.html
標籤:其他
上一篇:C語言 畫心形 程式員的簡單浪漫
