试题A:组队 | 试题B:不同子串 |
---|---|
试题C:数列求值 | 试题 D: 数的分解 |
试题 E: 迷宫(BFS) | 试题 F: 特别数的和 |
试题 G: 外卖店优先级(模拟) | 试题 H: 人物相关性分析 |
试题 I: 后缀表达式 | 试题 J: 灵能传输 (前缀和) |
97+99+98+98+98 = 490
答案:100
public class Main {
public static void main(String[] args) {
String s = "0100110001010001";
HashSet<String> hs = new HashSet<>();
for (int i = 0; i < s.length(); i++)
for (int j = i+1; j <= s.length(); j++)
hs.add(s.substring(i, j));
System.out.println(hs.size());
}
}
答案:4659
public class Main {
public static void main(String[] args) {
int[] num = new int[20190400];
num[1] = 1;
num[2] = 1;
num[3] = 1;
for (int i = 4; i < num.length; i++) {
num[i] = (num[i - 1] + num[i - 2] + num[i - 3]) % 10000;
}
System.out.println(num[20190324]);
}
}
答案:40785
public class Main {
public static void main(String[] args){
int res = 0;
for (int i = 1; i < 2019; i++) {
for (int j = i + 1; j < 2019; j++) {
for (int k = j + 1; k < 2019; k++) {
if ((i + j + k) == 2019 && !has2_or_4(i) && !has2_or_4(j) && !has2_or_4(k)) {
res++;
}
}
}
}
System.out.println(res);
}
public static boolean has2_or_4(int x) {
int temp = x;
while (temp != 0) {
if (temp % 10 == 2 || temp % 10 == 4) {
return true;
}
temp /= 10;
}
return false;
}
}
DDDDRRURRRRRRDRRRRDDDLDDRDDDDDDDDDDDDRDDRRRURRUURRDDDDRDRRRRRRDRRURRDDDRRRRUURUUUUUUULULLUUUURRRRUULLLUUUULLUUULUURRURRURURRRDDRRRRRDDRRDDLLLDDRRDDRDDLDDDLLDDLLLDLDDDLDDRRRRRRRRRDDDDDDRR
public class Main {
public static void main(String[] args){
String s = "01010101001011001001010110010110100100001000101010"
+ "00001000100000101010010000100000001001100110100101"
+ "01111011010010001000001101001011100011000000010000"
+ "01000000001010100011010000101000001010101011001011"
+ "00011111000000101000010010100010100000101100000000"
+ "11001000110101000010101100011010011010101011110111"
+ "00011011010101001001001010000001000101001110000000"
+ "10100000101000100110101010111110011000010000111010"
+ "00111000001010100001100010000001000101001100001001"
+ "11000110100001110010001001010101010101010001101000"
+ "00010000100100000101001010101110100010101010000101"
+ "11100100101001001000010000010101010100100100010100"
+ "00000010000000101011001111010001100000101010100011"
+ "10101010011100001000011000010110011110110100001000"
+ "10101010100001101010100101000010100000111011101001"
+ "10000000101100010000101100101101001011100000000100"
+ "10101001000000010100100001000100000100011110101001"
+ "00101001010101101001010100011010101101110000110101"
+ "11001010000100001100000010100101000001000111000010"
+ "00001000110000110101101000000100101001001000011101"
+ "10100101000101000000001110110010110101101010100001"
+ "00101000010000110101010000100010001001000100010101"
+ "10100001000110010001000010101001010101011111010010"
+ "00000100101000000110010100101001000001000000000010"
+ "11010000001001110111001001000011101001011011101000"
+ "00000110100010001000100000001000011101000000110011"
+ "10101000101000100010001111100010101001010000001000"
+ "10000010100101001010110000000100101010001011101000"
+ "00111100001000010000000110111000000001000000001011"
+ "10000001100111010111010001000110111010101101111000";
int c = 50;
int r = 30;
char[][] map = new char[r][c];
for (int i = 0, k = 0; i < r; i++, k += 50) {
map[i] = s.substring(k, k + 50).toCharArray();
}
BFS(map, r, c);
}
public static void BFS(char[][] map, int r, int c) {
int[] x = { 1, 0, 0, -1 };
int[] y = { 0, -1, 1, 0 };
char dirName[] = { 'D', 'L', 'R', 'U' };
boolean[][] vis = new boolean[r][c];
Queue<Node> queue = new LinkedList<Node>();
Node node = new Node(0, 0, "");
vis[0][0] = true;
queue.offer(node);
while (!queue.isEmpty()) {
Node curNode = queue.poll();
if (curNode.x == r - 1 && curNode.y == c - 1) {
System.out.println(curNode.path);
System.out.println(curNode.path.length());
break;
}
for (int i = 0; i < 4; i++) {
int nextX = curNode.x + x[i];
int nextY = curNode.y + y[i];
if (nextX >= 0 && nextX < r && nextY >= 0 && nextY < c && vis[nextX][nextY] == false) {
if (map[nextX][nextY] == '0') {
queue.offer(new Node(nextX, nextY, curNode.path + dirName[i]));
vis[nextX][nextY] = true;
}
}
}
}
}
}
//节点类
class Node {
int x;
int y;
String path;
public Node(int x, int y, String path) {
super();
this.x = x;
this.y = y;
this.path = path;
}
}
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int res = 0;
for (int i = 1; i <= n; i++) {
if (isOk(i)) {
res += i;
}
}
System.out.println(res);
scanner.close();
}
public static boolean isOk(int x) {
int temp = x;
while (temp != 0) {
int num = temp % 10;
if (num == 1 || num == 2 || num == 9 || num == 0)
return true;
temp /= 10;
}
return false;
}
}
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Set<Integer> set = new HashSet<Integer>();
int N = scanner.nextInt();
int M = scanner.nextInt();
int T = scanner.nextInt();
int[][] orders = new int[M][2];
for (int i = 0; i < M; i++) {
for (int j = 0; j < 2; j++) {
orders[i][j] = scanner.nextInt();
}
}
int[] priority = new int[N];
int[] sign = new int[N];
for (int i = 1; i <= T; i++) {
for (int j = 0; j < M; j++) {
if (orders[j][0] == i) {
priority[orders[j][1] - 1] += 2;
if (priority[orders[j][1] - 1] > 5) {
set.add(orders[j][1] - 1);
}
sign[orders[j][1] - 1] = 1; //标记有订单的外卖店
}
}
for (int j = 0; j < N; j++) {
if (sign[j] == 0 && priority[j] > 0) //其他外卖店没有订单,优先级减1
priority[j]--;
if (priority[j] <= 3) {
set.remove(j);
}
}
sign = new int[N];
}
System.out.println(set.size());
scanner.close();
}
}