B.纪念日
利用java 8 中的日期类来解答ChronoUnit.DAYS.between()算出一共有多少天,然后转换为分钟数
package com.lanqiao2020;
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
public class BMain {
public static void main(String[] args) {
LocalDate per = LocalDate.of(1921, 7, 23);
LocalDate cur = LocalDate.of(2020, 7, 1);
long between = ChronoUnit.DAYS.between(per, cur);
System.out.println(between);
long res=between*60*24;
System.out.println(res);
}
}
36138
52038720
C.合并检测
package com.lanqiao2020;
public class CMain {
public static void main(String[] args) {
int k=0;
int max=Integer.MAX_VALUE;
int count=0;
for(int i=1;i<=100;i++) {
if(100%i==0) {
count=100/i+i;
}else {
count=100/i+1+i;
}
if(count<max) {
max=count;
k=i;
}
}
System.out.println(k);
}
}
答案:10
D.分配口罩
9090400
8499400
5926800
8547000
4958200
4422600
5751200
4175600
6309600
5865200
6604400
4635000
10663400
8087200
4554000
思路:用dfs 深度优先算法,明确选择是我们的医院1 和医院2,每轮递归都会用到这两个选择。然后路径的话是我们的总数据(一共15个数据),即进行完15轮就结束了。最后的终止条件是 等加完了所有的数据之后,我们挑选所有情况的最小值。
package com.lanqiao2020;
import java.util.LinkedList;
import java.util.Scanner;
public class DMain {
static int min = Integer.MAX_VALUE;
static int sum1, sum2 = 0;
static LinkedList<Integer> arrList = new LinkedList<>();
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
for (int i = 0; i < 15; i++) {
int num = scan.nextInt();
arrList.add(num);
}
dfs(0);
System.out.println(min);
}
public static void dfs(int index) {
if (index == 15) {
min = Math.min(Math.abs(sum1 - sum2), min);
} else {
sum1 += arrList.get(index);
index++;
dfs(index);
index--;
sum1 -= arrList.get(index);
sum2 += arrList.get(index);
index++;
dfs(index);
index--;
sum2 -= arrList.get(index);
}
}
}
E 斐波那契数列最大公约数
package com.lanqiao2020;
import java.math.BigInteger;
public class EMain {
public static void main(String[] args) {
BigInteger num520=BigInteger.ZERO;BigInteger num2020=BigInteger.ZERO;
BigInteger n1=BigInteger.ONE; BigInteger n2=BigInteger.ONE; BigInteger n3=BigInteger.ZERO;
for(int i=3;i<=2020;i++) {
n3=n1.add(n2);
if(i==520) {
num520=n3;
}
if(i==2020) {
num2020=n3;
}
n1=n2;
n2=n3;
}
System.out.println(num520);
System.out.println(num2020);
System.out.println(gcd(num520, num2020));
}
public static BigInteger gcd(BigInteger a,BigInteger b) {
while(!b.equals(BigInteger.ZERO)) {
BigInteger temp=a;
a=b;
b=temp.mod(b);
}
return a;
}
}
F 分类计数
package com.lanqiao2020;
import java.util.Scanner;
public class FMain {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String str = scan.nextLine();
char[] charArray = str.toCharArray();
int upperCount = 0;
int lowerCount = 0;
int digitCount = 0;
int n = charArray.length;
for (int i = 0; i < n; i++) {
if (Character.isUpperCase(charArray[i])) {
upperCount++;
} else if (Character.isLowerCase(charArray[i])) {
lowerCount++;
} else if (Character.isDigit(charArray[i])) {
digitCount++;
}
}
System.out.println(upperCount);
System.out.println(lowerCount);
System.out.println(digitCount);
}
}
1+a=Aab
1
3
1
G 八次求和
用BigInteger 解答
package com.lanqiao2020;
import java.math.BigInteger;
import java.util.Scanner;
public class GMain {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
int n = scanner.nextInt();
scanner.close();
BigInteger sum=BigInteger.ZERO;
for(int i=1;i<=n;i++){
sum= sum.add(new BigInteger(""+i).pow(8));
}
BigInteger modNum = BigInteger.valueOf(123456789);
sum=sum.mod(modNum);
System.out.println(sum);
}
}
I BST插入节点问题
package com.lanqiao2020;
import java.util.Scanner;
public class IMain {
//MAX表示无穷大
static int MAX=Integer.MAX_VALUE;
//MAX表示无穷小
static int MIN=Integer.MIN_VALUE;
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
int N = scan.nextInt();
int K = scan.nextInt();
Node[] nodes=new Node[N];
for(int i=0;i<N;i++) {
int parentId = scan.nextInt();
int weight = scan.nextInt();
if(i==0) {
nodes[0]=new Node(1,parentId,weight,MIN,MAX);
}else {
int min=0;
int max=0;
Node parent= nodes[parentId-1];
if(weight>parent.weight) {
min=parent.weight+1;
max=parent.maxVal;
parent.maxVal=parent.weight;
}else {
max=parent.weight-1;
min=parent.minVal;
parent.minVal=parent.weight;
}
nodes[i]=new Node(i+1,parentId,weight,min,max);
}
}
if(nodes[K-1].minVal==MIN||nodes[K-1].maxVal==MAX){
System.out.println(-1);
}else{
System.out.println(nodes[K-1].maxVal-nodes[K-1].minVal);
}
}
}
class Node {
int id;
int parentId;
int weight;
int minVal;
int maxVal;
public Node(int id,int parentId,int weight,int minVal,int maxVal) {
this.id=id;
this.parentId=parentId;
this.weight=weight;
this.minVal=minVal;
this.maxVal=maxVal;
}
}