3.1w+
社区成员
数的分解
暴力,求出 [1,2019]不包含2和4的数字,存储到集合中,再三层循环遍历,求出满足三数之和为2019的个数
import java.util.Scanner;
import java.util.List;
import java.util.ArrayList;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
static int result = 0;
public static void main(String[] args) {
// List<Integer> list = new ArrayList<>();
// for(int i = 1; i <= 2019; i++) {
// if(!isContain(i)) {
// list.add(i);
// }
// }
// int size = list.size();
// for(int i = 0; i < size - 2; i++) {
// for(int j = i + 1; j < size - 1; j++) {
// for(int k = j + 1; k < size; k++) {
// if(list.get(i) + list.get(j) + list.get(k) == 2019) {
// result++;
// }
// }
// }
// }
System.out.print(40785);
}
}
猜生日
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
public static void main(String[] args) {
int year = 2012;
int month = 3;
int day = 12;
for(int i = 19480612; ; i++) {
// 8位数能整除年、月、日
if(i % year == 0 && i % month == 0 && i % day == 0) {
// 6月份出生
int curMonth = i / 100 % 10; // 月份
if(curMonth == 6) {
System.out.print(i);
break;
}
}
}
}
}
成绩统计
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
//在此输入您的代码...
// 统计及格 和 优秀个数,然后和总数做除法运算
int n = scan.nextInt();
int normal = 0; // 及格
int good = 0; // 优秀
for(int i = 0; i < n; i++) {
int tmp = scan.nextInt();
if(tmp >= 60) {
normal++;
if(tmp >= 85) {
good++;
}
}
}
// Math.round(double num) : 四舍五入,返回long类型
int finalNormal = (int) Math.round(normal * 1.0 / n * 100);
int finalGood = (int) Math.round(good * 1.0 / n * 100);
System.out.println(finalNormal + "%");
System.out.println(finalGood + "%");
scan.close();
}
}
最大和
记忆化搜索过不了 ?😫😫😫
动态规划:dp[i] : 走到 第i格 的最大总分值
状态转移方程:dp[i] = Math.max(dp[i], dp[j] + nums[i]), j为i之前的格子
import java.util.Scanner;
import java.util.Arrays;
// 1:无需package
// 2: 类名必须Main, 不可修改
// 质因数:能够整除给定正整数的质数
public class Main {
public static int INF = Integer.MIN_VALUE;
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
//在此输入您的代码...
int n = scan.nextInt();
int[] nums = new int[n + 1];
for(int i = 1; i <= n; i++) {
nums[i] = scan.nextInt();
}
int[] dp = new int[n + 1];
Arrays.fill(dp, INF);
dp[1] = nums[1];
for(int i = 1; i <= n; i++) {
int right = minZhiElement(n - i);
// j <= n防止越界
for(int j = i + 1; j <= i + right && j <= n; j++) {
dp[j] = Math.max(dp[j], dp[i] + nums[j]);
}
}
System.out.print(dp[n]);
scan.close();
}
// 最小质因子
public static int minZhiElement(int num) {
int result = 1;
for(int i = 2; i <= num; i++) {
if(num % i == 0 && isZhiShu(i)) {
result = i;
break;
}
}
return result;
}
// 质数
public static boolean isZhiShu(int num) {
for(int i = 2; i < num; i++) {
if(num % i == 0) {
return false;
}
}
return true;
}
}