小红划数字

题目

小红拿到了一个正整数 n。对于任意大于 9 的数而言,她每次操作可以划掉这个数的一个数字,生成一个新的数。
例如,对于正整数12345而言,小红经过一次操作可以生成1234、1235、1245、1345、2345这五种数字。小红想知道,自己最少操作多少次,可以把 n 变成一个偶数?

数据范围:

空间复杂度 :

时间复杂度:

输入描述

输出描述

示例1

示例2

示例3

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
* @author liuwq
* @create 2023-03-21 20:16
*/
public class main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
int number = Integer.parseInt(s);
int result = 0;
while (number % 2 != 0){
number /= 10;
result++;
}
if (number == 0) System.out.println(-1);
System.out.println(result);
}
}

小红填符号

题目

小红拿到了一个算式:
可惜因为字迹不清导致小红无法看清其运算符。小红想让你帮忙填两个运算符进去,保证式子正确。
注:请注意,乘除的优先级比加减要高!

输入描述

输出描述

示例1

示例2

示例3

示例4

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
* @author liuwq
* @create 2023-03-21 20:56
*/
public class 小红填符号 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
String[] in = s.split(" ");
double a = Double.parseDouble(in[0]);
double b = Double.parseDouble(in[1]);
double c = Double.parseDouble(in[2]);
double x = Double.parseDouble(in[3]);
if (a + b + c == x){
System.out.println("+ +");
}else if (a + b - c == x){
System.out.println("+ -");
}else if (a + b * c == x){
System.out.println("+ *");
}else if (c != 0 && a + b / c == x){
System.out.println("+ /");
}else if (a - b + c == x){
System.out.println("- +");
}else if (a - b - c == x){
System.out.println("- -");
}else if (a - b * c == x){
System.out.println("- *");
}else if (c != 0 && a - b / c == x){
System.out.println("- /");
}else if (a * b + c == x){
System.out.println("* +");
}else if (a * b - c == x){
System.out.println("* -");
}else if (a * b * c == x){
System.out.println("* *");
}else if (b != 0 && a / b + c == x){
System.out.println("/ +");
}else if (b != 0 && a / b - c == x){
System.out.println("/ -");
}else if (b != 0 && a / b * c == x){
System.out.println("/ *");
}else if (b != 0 && c != 0 && a / b / c == x){
System.out.println("/ /");
}else {
System.out.println("? ?");
}
}
}

小红和R

题目

小红非常喜欢红色,以至于她也很喜欢红色(RED)的英文单词的首字母:R。现在她想让你画出大小为 n 的”R”,你能帮帮她吗?具体画法参考样例。请不要在行尾添加多余的空格。

输入描述

输出描述

示例1

示例2

示例3

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
* @author liuwq
* @create 2023-03-23 09:33
*/
public class 小红和R {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
int n = Integer.parseInt(s);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < n+2; i++){
sb.append("R");
}
sb.append("\n");
for (int i = 0; i < n; i++){
sb.append("R");
for (int j = 0; j < n; j++){
sb.append(" ");
}
sb.append("R\n");
}
for (int i = 0; i < n+2; i++){
sb.append("R");
}
sb.append("\n");
for (int i = 0; i < n+1; i++){
sb.append("R");
for (int j = 0; j < i; j++){
sb.append(" ");
}
sb.append("R\n");
}
System.out.println(sb);
}
}

小红练心算

题目

小红正在练习快速心算一个大数平方的技巧.
这个技巧用到了一个公式,
这个公式可以用来快速计算大数的平方, 例如,
这样就把一个三位数的平方, 转化为一个三位数乘以一位数加上一个两位数的平方。
一般的, 对于一个 k 位数, 可以用上述公式转化为 乘以 另一个 k 位数再加上一个 k-1 位数的平方。这样递归下去就可以把大数平方转化为很多个大数和一位数(指1至9的正整数)相乘的结果之和了。
转化的方式为: 寻找离某数最近的那个 并套用上述公式, 例如
特殊的, 若该数离两个 的距离相等, 那么选择任一个对于结果都是没有影响的, 例如 ,该题要求的输出形式, 所有的乘积小的数一定写在大的数前面, 例如 而不采用

输入一个正整数 n , 请你还原小红心算的过程。具体参考样例说明

输入描述

输出描述

示例1

示例2

示例3

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import java.io.IOException;
import java.util.Scanner;

/**
* @author liuwq
* @create 2023-03-23 10:51
*/
public class 小红练心算 {
public static Long l,r;
public static void main(String[] args) throws IOException {
Scanner in = new Scanner(System.in);
long n = in.nextLong();
String temp = "=";
while (n > 0){
System.out.println(n+"^2");
n = getNextN(n);
temp += l.toString()+"*" + r.toString();
if(n > 0) temp += "+";
System.out.print(temp);
}
}
public static long getNextN(long n){
long res=1;
while(n / res > 9) res *= 10;
long p1 = n / res * res, p2 = p1 + res;
if(n - p1 > p2 - n){
r = p2;
l = 2*n - p2;
return p2-n;
}
l = p1;
r = 2*n - p1;
return n-p1;
}
}