蓝桥杯第十一届JavaA组代码
A.门牌制作(5分)
代码:
public class thirtyeight {
public static void main(String[] args) {
int p;int t=0;
for(int i=1;i<=2020;i++) {
p=i;
while(p!=0) {
if(p%10==2) {
t++;
}
p=p/10;
}
}
System.out.println(t);
}
}
结果:
624
B.既约分数(5分)
代码:
public class thirtynine {
public static void main(String[] args) {
int p,k;int t=0;int r;
for(int i=1;i<=2020;i++) {
for(int j=1;j<=2020;j++) {
p=i;k=j;
while(p%k!=0) {
r=k;
k=p%k;
p=r;
}
if(k==1) {
t++;
}
}
}
System.out.println(t);
}
}
结果:2481215
C.蛇形填数(10分)
代码:
public class forty {
public static void main(String[] args) {
int[][] a=new int[51][51];
int k=1;
for(int i=1;i<=50;i++) {
for(int j=1;j<=i;j++) {
a[j][i-j+1]=k;
k++;
}
}
System.out.println(a[20][20]);
}
}
结果:761
D.七段码(10分)
这题不会
E.平面分割(15分)
这题不会
F.成绩分析(15分)
【样例输入】
7
80
92
56
74
88
99
10
【样例输出】
99
10
71.29
代码:
import java.util.Scanner;
import java.util.Arrays;
public class fortyone {
public static void main(String[] args) {
Scanner reader=new Scanner(System.in);
int n=reader.nextInt();//人数
int[] a=new int[n];double sum=0;
for(int i=0;i<n;i++) {
a[i]=reader.nextInt();
sum+=a[i];
}
Arrays.sort(a);
System.out.println(a[n-1]);
System.out.println(a[0]);
System.out.printf("%.2f",sum/n);
}
}
/*
7
80
92
56
74
88
99
10
*/
15分
G: 回文日期(20分)
【样例输入】
20200202
【样例输出】
20211202
21211212
代码:
import java.util.Scanner;
public class fortytwo {
public static void main(String[] args) {
Scanner reader=new Scanner(System.in);
int n=reader.nextInt();
int[] a=new int[8];int p;int day=0,month=0,year=0;
for(int i=n+1;i<=99991231;i++) {
p=i;
for(int j=7;j>=0;j--) {
a[j]=p%10;
p=p/10;
}
year=a[0]*1000+a[1]*100+a[2]*10+a[3];
month=a[4]*10+a[5];
if(month>12) {
continue;
}
day=10*a[6]+a[7];
if(day>31) {
continue;
}
//回文:
if(a[7]==a[0]&&a[6]==a[1]&&a[5]==a[2]&&a[4]==a[3]) {
//闰年
if(year%400==0||(year%4==0&&year%100!=0)) {
if(month==2&&day<=29) {
System.out.println(i);
break;
}
if((month==1||month==3||month==5||month==7||month==8||month==10||month==12)&&day<=31) {
System.out.println(i);
break;
}
if((month==4||month==6||month==9||month==10)&&day<=30) {
System.out.println(i);
break;
}
}
//平年
else {
if(month==2&&day<=28) {
System.out.println(i);
break;
}
if((month==1||month==3||month==5||month==7||month==8||month==10||month==12)&&day<=31) {
System.out.println(i);
break;
}
if((month==4||month==6||month==9||month==10)&&day<=30) {
System.out.println(i);
break;
}
}
}
}
for(int i=n+1;i<=99991231;i++) {
p=i;
for(int j=7;j>=0;j--) {
a[j]=p%10;
p=p/10;
}
year=a[0]*1000+a[1]*100+a[2]*10+a[3];
month=a[4]*10+a[5];
if(month>12) {
continue;
}
day=10*a[6]+a[7];
if(day>31) {
continue;
}
//ABABBABA:
if(a[0]==a[2]&&a[5]==a[7]&&a[2]==a[5]&&a[1]==a[3]&&a[4]==a[6]&&a[3]==a[4]) {
//闰年
if(year%400==0||(year%4==0&&year%100!=0)) {
if(month==2&&day<=29) {
System.out.println(i);
break;
}
if((month==1||month==3||month==5||month==7||month==8||month==10||month==12)&&day<=31) {
System.out.println(i);
break;
}
if((month==4||month==6||month==9||month==10)&&day<=30) {
System.out.println(i);
break;
}
}
//平年
else {
if(month==2&&day<=28) {
System.out.println(i);
break;
}
if((month==1||month==3||month==5||month==7||month==8||month==10||month==12)&&day<=31) {
System.out.println(i);
break;
}
if((month==4||month==6||month==9||month==10)&&day<=30) {
System.out.println(i);
break;
}
}
}
}
}
}
感觉可以改进很多,不过暂时这样吧
20分
H: 子串分值(20分)
【样例输入】
ababc
【样例输出】
21
【样例说明】
子串 f值 a 1
ab 2
aba 1
abab 0
ababc 1
b 1
ba 2
bab 1
babc 2
a 1
ab 2
abc 3
b 1
bc 2
c 1
代码:
import java.util.Scanner;
public class fortythree {
public static void main(String[] args) {
Scanner reader=new Scanner(System.in);
String s=reader.next();
int t=0;
int q=s.length();int n=0;
while(q!=0) {
n+=q;
q=q-1;
}
String[] p=new String[n];
int m=0;int f=0;
for(int i=0;i<n;i++) {
//提出子串
if(f<n) {
for(int j=i+1;j<=s.length();j++) {
p[f]=s.substring(i,j);
//System.out.println("i="+f+"p[i]="+p[f]);
f++;
}
}
else {
break;
}
}
//子串中每个字符检索
int[] a=new int[27];
for(int i=0;i<n;i++) {
m=0;
for(int h=0;h<27;h++) {
a[h]=0;
}
for(int k=0;k<p[i].length();k++) {
a[(p[i].charAt(k)-97)]++;
}
//26个字母的数量分别查
for(int k=0;k<27;k++) {
if(a[k]==1) {
m++;
}
}
//System.out.println("m="+m);
t+=m;
}
System.out.println(t);
}
}
8分
I: 荒岛探测(25分)
【样例输入】
10 6 4 12 12
0 2 13 2 13 15
【样例输出】
39.99
这题还没做到
J.字串排序(25分)
【样例输入】
4
【样例输出】
bbaa
【样例输入】
100
【样例输出】
jihgfeeddccbbaa
这题还没做到