抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

一方の笔记本

The only source of knowledge is experience.

初学Java时所做的一些笔记,内容主要以题目形式呈现。

AcWing 656

这是原题链接,主要考察计算精度处理。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.util.Scanner;

public class Main {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
double N = sc.nextDouble();
//精度问题,既然都是小数点后两位那直接将输入*100再用整数计算即可
int n = (int)(N * 100);
int[] arr = new int[] {10000, 5000, 2000, 1000, 500, 200, 100, 50, 25, 10, 5, 1};
for(int i = 0; i < arr.length; i++) {
if(i == 0) System.out.println("NOTAS:");
if(i == 6) System.out.println("MOEDAS:");
if(i < 6) System.out.printf("%d nota(s) de R$ %d.00\n", n / arr[i], arr[i] / 100);
else System.out.printf("%d moeda(s) de R$ %.2f\n", n / arr[i], arr[i]/ 100.0);
n -= n / arr[i] * arr[i];
}
}
}

AcWing 727

经典输出菱形的题目,这是原题链接,受到\(|x| + |y| = 1\)代表边长为\(\sqrt{2}\)、中心在原点且各个顶点都在坐标轴上的正方形可以得到较为优雅的代码。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import java.util.Scanner;

public class Main {
static boolean star(int i, int j, int n) {
return Math.abs(i - n / 2) + Math.abs(j - n / 2) <= n / 2;
}
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for(int i = 0; i < n; i++) {
for(int j = 0; j < n; j++) {
System.out.printf("%c", star(i, j, n)? '*': ' ');
}
System.out.println();
}
}
}

AcWing 719

这是原题链接注意 C/C++Java 中,取整操作都是向下取整,对于负数取整结果可能小于零

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import java.util.Scanner;

public class Main {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for(int i = 0; i < n; i++) {
int a = sc.nextInt(), b = sc.nextInt(), ans = 0;
if(a > b) {
int t = a;
a = b;
b = t;
}
//attention
for(int j = a + 1; j < b; j++) if(j % 2 == 1 || j % 2 == -1) ans += j;
System.out.println(ans);
}
}
}

评论