试题 A: 平方和
import java.util.Scanner;
public class _7 {
static long ans=0;
public static void main(String[] args) {
for (int i = 1; i <= 2019; i++) {
String s=i+"";
if(s.contains("0")||s.contains("2")||s.contains("1")||s.contains("9")){
ans+=i*i;
}
}
System.out.println(ans);
}
}
答案:2658417853
试题 B: 数列求值
public class _8 {
public static void main(String[] args) {
long a=1,b=1,c=1,d=0;
for (int i = 4; i <= 20190324; i++) {
d=(a+b+c)%10000;
a=b;
b=c;
c=d;
}
System.out.println(d);
}
}
答案:4659
试题 D: 最大降雨量
这题用嘴数就可以了,因为要的是最大中位数,那就要中位数仅次于大于他的三个数,就从49倒着往前隔三个是一个中位数,一直数到第四个中位数出现就是答案。
答案:34
E不会
以下代码并不能保证过所有测试点。。。奇怪的蓝桥杯系统每次提交都说我内部错误。
试题 F: 完全二叉树的权值
import java.util.Scanner;
public class _3 {static long[] sum=new long[10005];
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int k=1;
for(;;){
if((2<<k)-1==n)break;
else k++;
}
int[] a=new int[n+5];
int len=0;
for (int i = 0; i < n; i++) {
a[i]=sc.nextInt();
if(i<len*2+1)sum[len]+=a[i];
if(i==len*2+1){
sum[len]+=a[i];
len++;
}
}
long max=-1000000000,l=0;
for (int i = 0; i < k; i++) {
if(sum[i]>max){
max=sum[i];
l=i+1;
}
}
System.out.println(l);
}
}
试题 G: 外卖店优先级
import java.util.*;
public class _4 {
static int n,m,t;
static class info{
int ts,id;
public info(int ts, int id) {
this.ts = ts;
this.id = id;
}
}
static info[] infos=new info[100005];
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
n=sc.nextInt();
m=sc.nextInt();
t=sc.nextInt();
for (int i = 0; i < m; i++) {
int ts=sc.nextInt();
int id=sc.nextInt();
infos[i]=new info(ts,id);
}
Comparator<info> cmp=new Comparator<info>() {
@Override
public int compare(info o1, info o2) {
return o1.ts-o2.ts;
}
};
Arrays.sort(infos,0,m,cmp);
int[] f=new int[n+5];
TreeSet<Integer> treeSet=new TreeSet<>();
for (int i = 1; i <= t; i++) {
for (int j = 1; j <= n; j++) {
if(f[j]!=0) f[j]--;
}
for (int i1 = 0; i1 < m; i1++) {
if(infos[i1].ts==i){
if(f[infos[i1].id]==0)f[infos[i1].id]+=2;
else f[infos[i1].id]+=3;
if(f[infos[i1].id]>=5)treeSet.add(infos[i1].id);
}
}
for (int j = 1; j <= n; j++) {
if(f[j]<=3&&treeSet.contains(j)) treeSet.remove(j);
}
}
System.out.println(treeSet.size());
}
}
试题 H: 修改数组
用“,数字,”可以防止contains找到的是包含它的数字而非本身。
import java.util.Scanner;
public class _5 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int[] a=new int[n+5];
for (int i = 0; i < n; i++) {
a[i]=sc.nextInt();
}
StringBuilder s= new StringBuilder(","+a[0] + ",");
for (int i = 1; i < n; i++) {
while(s.toString().contains(","+a[i]+",")){
a[i]++;
}
s.append(a[i]);
s.append(",");
}
for (int i = 0; i < s.length()-2; i++) {
if(s.charAt(i)==',')continue;
System.out.print(s.charAt(i)+" ");
}
System.out.println(s.charAt(s.length()-2));
}
}
J不会